Django模板继承与自定义标签实战:从静态文件到母版复用
本文深入解析Django模板系统的核心功能,涵盖ROOT_URLCONF配置、三种静态文件引入方式、模板导入与母版继承机制,以及通过自定义inclusion_tag返回HTML片段的完整步骤。通过具体代码示例,帮助开发者掌握页面布局复用与动态内容生成的最佳实践。
Django根路由配置与静态文件引入
在Django项目中,根路由配置文件的路径可通过ROOT_URLCONF变量进行设定,默认情况下该变量指向项目根目录下的urls模块(例如untitled.urls)。
若需调整根路由的位置,可修改ROOT_URLCONF的值,将其指向特定应用下的urls模块,例如设置为app01.urls,从而将根路由逻辑封装在app01应用内部。
Django中引入静态文件主要有三种常见方式,分别适用于不同的配置场景。
第一种方式是通过HTML标签直接指定静态文件路径,例如使用link标签引入CSS样式表,路径需根据项目static目录结构正确配置。
<link rel="stylesheet" href="/static/dd/ssmycss.css" rel="external nofollow" > .
第二种方式推荐在模板中使用{% load static %}标签加载静态文件,并通过{% static '路径' %}过滤器引用具体文件,如{% static 'dd/ss/mycss.css' %},这种方式更符合Django的最佳实践。
{% load static %}
<link rel="stylesheet" href="{% static 'dd/ss/mycss.css' %}" rel="external nofollow" >
第三种方式是利用{% get_static_prefix %}标签获取静态文件前缀,再拼接具体路径,例如<link rel="stylesheet" href="{% get_static_prefix %}dd/ss/mycss.css">,适用于需要动态获取前缀的场景。
<link rel="stylesheet" href="{% get_static_prefix %}dd/ss/mycss.css" rel="external nofollow" >
模板导入与母版继承机制
模板导入功能允许开发者将公共HTML片段封装在独立模板文件中,实现代码复用。
具体做法是创建一个包含公共内容的模板文件,例如index.html,将导航栏、页脚等通用部分集中管理。
在需要使用公共部分的模板中,通过{% include 'index.html' %}标签直接引入该文件,即可将公共内容嵌入当前页面,简化模板编写。
母版继承是Django模板系统的核心特性之一,用于实现页面布局的统一管理。
母版中定义的样式和结构是固定的,继承该母版的子页面无论内容如何变化,其整体布局和位置保持不变,确保网站风格一致性。
1 写一个母版 base.html ===母版
2 要更改的地方( )
{% block base %} base是母版的盒子名称
母版的盒子里也可以写东西
{% endblock %}
3 调用:
3.1 必须写在第一行 {%extends 'base.html' %}
3.2 {% block base %}
自己的东西
{% endblock my_head%} 这儿加my_head是为了更清晰的看到结束条件。
3.3 还想用母版里的内容({{block.super}} 放在那,原来母版里的东西,就会渲染在哪)
{% block base %}
{{block.super}}
自己的东西
{% endblock my_head%}
3.4 如过不继承盒子,它会用原来的内容,如果继承了,没写自己的东西,它会空白,替换了原来的盒子。
3.5 盒子在继承时,跟顺序无关
自定义inclusion_tag返回HTML片段
自定义返回HTML片段的功能可通过Django的inclusion_tag实现,具体步骤如下:
自定义 inclusion_tag
1 先去setting里面把app名字配置上
2 再app目录下创建一个templatetags模块
3 写py文件(my_test.py)
4 from django import template
5 register=template.Library()
6 @register.inclusion_tag('test.html')
def my_inclusion(n):
data=[]
for i in range(n):
data.append('第%s行'%i)
return {'data':data}
7 写test.html页面
<ul>
{% for choice in data %}
<li>{{ choice }}</li>
{% endfor %}
</ul>
8 {% load my_test %}
9 {% my_inclusion 10 %} 它会返回html的页面
本文介绍了Django模板系统的关键技术点,包括路由配置、静态文件管理、模板导入与继承以及自定义标签的使用,希望能为开发者提供实用参考,欢迎继续关注本站获取更多技术内容。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









