Django模板继承与自定义标签实战:从静态文件到母版复用

追风的人
追风的人
发布时间:2026-10-13| 5人浏览过
原创

本文深入解析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模板系统的关键技术点,包括路由配置、静态文件管理、模板导入与继承以及自定义标签的使用,希望能为开发者提供实用参考,欢迎继续关注本站获取更多技术内容。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。