常用的Django模板语言

Django模板语言(Django Template Language, DTL)是Django框架中用于呈现HTML的方式。它具有一套丰富的标签和过滤器,帮助你在模板中动态渲染内容。常用的模板标签和过滤器有很多,以下是一些常见的:

常用模板标签:

  1. 变量输出:

    html 复制代码
    {{ variable }}

    用于输出变量的值。如果变量不存在,则不会显示内容。

  2. 控制结构标签:

    • 条件语句 (if、elif、else):

      html 复制代码
      {% if user.is_authenticated %}
          <p>Welcome, {{ user.username }}!</p>
      {% else %}
          <p>Please log in.</p>
      {% endif %}
    • 循环语句 (for):

      html 复制代码
      {% for item in item_list %}
          <p>{{ item.name }}</p>
      {% empty %}
          <p>No items available.</p>
      {% endfor %}
    • forloop(循环的特殊变量):

      html 复制代码
      {% for item in item_list %}
          {{ forloop.counter }}. {{ item.name }}
      {% endfor %}
  3. 模板继承:

    • extends:用来继承父模板。

      html 复制代码
      {% extends "base.html" %}
    • block:在父模板中定义可修改的内容区域。

      html 复制代码
      {% block content %}
      <p>This is content.</p>
      {% endblock %}
  4. include:

    html 复制代码
    {% include 'header.html' %}

    用于包含其他模板文件。

  5. URL反向解析:

    html 复制代码
    <a href="{% url 'app_name:view_name' %}">Link</a>

    用于根据URL模式名称生成URL。

常用模板过滤器:

过滤器用于修改模板变量的显示方式。

  1. default:

    html 复制代码
    {{ user.name|default:"Anonymous" }}

    如果user.name为空,则显示Anonymous。

  2. length:

    html 复制代码
    {{ items|length }}

    返回列表或字符串的长度。

  3. date:

    html 复制代码
    {{ article.published_at|date:"Y-m-d" }}

    格式化日期时间。

  4. lower/upper:

    html 复制代码
    {{ user.username|lower }}

    将字符串转换为小写(upper为大写)。

  5. safe:

    html 复制代码
    {{ raw_html|safe }}

    用于标记HTML代码为安全,避免被自动转义。

  6. join:

    html 复制代码
    {{ my_list|join:", " }}

    用指定的分隔符将列表连接成字符串。

  7. truncatechars:

    html 复制代码
    {{ description|truncatechars:100 }}

    将字符串截断为指定长度(例如100个字符)。

  8. escape:

    html 复制代码
    {{ user_input|escape }}

    将特殊字符(如<、>等)转义为HTML实体。

常用的其它标签:

  1. comment:用于注释,不会在输出中显示。

    html 复制代码
    {% comment %} This is a comment {% endcomment %}
  2. blocktrans:用于国际化翻译。

    html 复制代码
    {% blocktrans %} Welcome, {{ username }}! {% endblocktrans %}

这些标签和过滤器是Django模板语言的基础,可以帮助你灵活地渲染数据和构建动态网页。

相关推荐
全栈练习生5 小时前
AI Agent 沙箱
python·ai
SEO_juper6 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站
用户8356290780517 小时前
使用 Python 对 Excel 工作表进行排序
后端·python
for_ever_love__8 小时前
MySQL 全文索引实战:FULLTEXT、ngram 中文分词与 MATCH AGAINST 到底该怎么用
java·python·mysql·全文检索·分词·索引·ngram
用户8356290780518 小时前
使用 Python 合并 PowerPoint 演示文稿
后端·python
weixin_461769408 小时前
VS Code 中创建 Jupyter 文件(.ipynb)
ide·python·jupyter
2601_966949658 小时前
多市场量化策略的数据接口应该如何设计:从数据层架构到策略接入
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
全栈弄潮儿8 小时前
Python实战第1期:Python环境搭建与第一个程序
python
心易行者8 小时前
Agent应用+API端点商业化进阶实战:从单体智能体到可付费调用的API全流程
运维·服务器·人工智能·python·apache
weixin199701080169 小时前
《1688图片空间API踩坑:img.upload 与 album.* 的防盗链与CDN缓存问题》(附Python源码)
开发语言·python·缓存