django中template如何使用

发布时间:2021-06-22 15:48:53 作者:Leah
来源:亿速云 阅读:290
# Django中Template如何使用

## 一、Template基础概念

Django的模板系统(Template)是MTV架构中的核心组件之一,负责将业务逻辑与表现层分离。模板本质上是一个包含特殊标记的文本文件,支持动态内容渲染。

### 1.1 模板文件存放位置
默认情况下,Django会在每个app的`templates/`目录下查找模板文件。建议采用以下结构:

myproject/ ├── myapp/ │ └── templates/ │ └── myapp/ # 推荐添加app名前缀防止命名冲突 │ └── index.html


### 1.2 配置模板路径
在`settings.py`中确保包含APP_DIRS设置:
```python
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'APP_DIRS': True,  # 启用app目录模板查找
        'DIRS': [BASE_DIR / 'templates'],  # 全局模板目录
    }
]

二、模板语法详解

2.1 变量输出

使用双花括号输出变量:

<p>欢迎, {{ user.username }}!</p>
<p>当前时间: {{ now|date:"Y-m-d H:i" }}</p>

2.2 标签(Tags)

提供逻辑控制功能,用{% %}包裹:

{% if user.is_authenticated %}
    <a href="/logout/">登出</a>
{% else %}
    <a href="/login/">登录</a>
{% endif %}

<ul>
{% for item in item_list %}
    <li>{{ forloop.counter }}. {{ item.name }}</li>
{% empty %}
    <li>暂无数据</li>
{% endfor %}
</ul>

2.3 过滤器(Filters)

通过管道符|对变量进行处理:

{{ text|truncatechars:50 }}  {# 截断字符 #}
{{ value|floatformat:2 }}    {# 浮点数格式化 #}
{{ html_content|safe }}      {# 关闭自动转义 #}

三、模板继承机制

3.1 基础模板(base.html)

<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}默认标题{% endblock %}</title>
</head>
<body>
    <div class="content">
        {% block content %}{% endblock %}
    </div>
</body>
</html>

3.2 子模板继承

{% extends "base.html" %}

{% block title %}子页面标题{% endblock %}

{% block content %}
    <h1>这是主要内容区</h1>
    {{ block.super }}  {# 引用父模板内容 #}
{% endblock %}

四、高级模板技巧

4.1 包含其他模板

{% include "widgets/sidebar.html" %}

4.2 自定义标签和过滤器

  1. 在app目录创建templatetags/
  2. 创建自定义模块(如my_filters.py):
from django import template

register = template.Library()

@register.filter
def add_str(value, arg):
    return f"{value}-{arg}"
  1. 模板中使用:
{% load my_filters %}
{{ 'hello'|add_str:'world' }}  {# 输出:hello-world #}

五、最佳实践建议

  1. 保持模板简洁:复杂的逻辑应该放在views.py中处理
  2. 合理使用继承:三层继承结构通常足够(base → section → page)
  3. 模板片段复用:将重复元素(如分页控件)提取为单独模板
  4. 启用autoescape:默认开启HTML自动转义防止XSS攻击
  5. 性能优化:使用{% with %}缓存复杂查询结果

六、调试技巧

  1. 查看可用变量:
<pre>{{ debug|pprint }}</pre>
  1. 使用django-debug-toolbar分析模板渲染

通过合理使用Django模板系统,可以构建出结构清晰、易于维护的前端界面,同时保持业务逻辑与表现层的良好分离。 “`

(注:实际字数为约650字,可根据需要扩展具体示例或添加更多高级用法)

推荐阅读:
  1. 94django_template
  2. 为什么django的template中无法引用MEDIA_URL

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

django template

上一篇:Redis内存数据库的作用是什么

下一篇:Map的介绍的使用方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》