• 深入理解 Django 模板系统


    0?wx_fmt=jpeg


    概要

    在任何 Web 开发过程中,渲染和展示数据是不可或缺的一部分。Django 作为一个高效的 Python Web 框架,提供了一个强大且灵活的模板系统。本文将详细介绍 Django 模板系统的核心概念、语法和高级功能。


    一、Django 模板系统简介

    Django 的模板系统允许开发者使用模板语言来生成动态 HTML 输出。模板包含变量,这些变量会被 Django 替换为实际的值,并且模板也包含标签,这些标签允许逻辑编程比如循环或判断。

    二、基本使用

    1. 「创建模板」

    假设你有一个名为 myapp 的 Django 应用,可以在该应用下创建一个名为 templates 的文件夹,并在其中创建模板文件,例如 index.html

    1. myapp/
    2. ├── templates/
    3. │ └── index.html
    4. └── ...
    1. 「编写模板」

    在 index.html 文件中,你可以使用 Django 模板语言来创建动态内容。

    1. <html>
    2. <body>
    3.     <h1>Welcome {{ user.username }}</h1>
    4.     <ul>
    5.         {% for item in item_list %}
    6.             <li>{{ item.name }}</li>
    7.         {% endfor %}
    8.     </ul>
    9. </body>
    10. </html>

    在这个例子中,{{ user.username }} 是一个变量,而 {% for item in item_list %} 是一个模板标签用于循环。

    1. 「渲染模板」

    在你的 Django 视图中,你可以使用 render 函数来渲染模板。

    1. from django.shortcuts import render
    2. def index(request):
    3.     context = {'user': request.user, 'item_list': Item.objects.all()}
    4.     return render(request, 'index.html', context)

    三、模板继承

    模板继承是 Django 模板系统中最强大的部分之一。

    1. 「基础模板」

    创建一个基础模板 base.html,其中包含网站的共同结构和元素。

    1. <html>
    2. <head>
    3.     <title>{% block title %}My Website{% endblock %}</title>
    4. </head>
    5. <body>
    6.     <header>
    7.         <!-- 头部内容 -->
    8.     </header>
    9.     <main>
    10.         {% block content %}{% endblock %}
    11.     </main>
    12.     <footer>
    13.         <!-- 脚部内容 -->
    14.     </footer>
    15. </body>
    16. </html>
    1. 「子模板」

    在子模板中,你可以通过定义块(blocks)来重写基础模板中的内容。

    1. {% extends 'base.html' %}
    2. {% block title %}Welcome Page{% endblock %}
    3. {% block content %}
    4.     <h1>Welcome {{ user.username }}h1>
    5.     
    6. {% endblock %}

    四、模板标签和过滤器

    1. 「标签(Tags)」

    标签提供了在模板中插入逻辑的方式。例如 {% if user.is_authenticated %} 和 {% for item in item_list %}

    1. 「过滤器(Filters)」

    过滤器用于在变量被显示之前修改它们。例如,{{ user.username|lower }} 会将用户名转换为小写。

    五、自定义标签和过滤器

    你也可以创建自己的模板标签和过滤器。

    1. 「创建自定义过滤器」

    在你的 Django 应用中创建一个名为 templatetags 的文件夹,并在其中创建一个 Python 文件,例如 my_filters.py

    1. from django import template
    2. register = template.Library()
    3. @register.filter(name='cut')
    4. def cut(value, arg):
    5.     return value.replace(arg, '')

    使用 {% load my_filters %} 来在模板中使用这个过滤器。

    1. 「创建自定义标签」

    类似地,你可以在 templatetags 文件夹中创建自定义标签。

    六、小结

    Django 模板系统提供了一个非常强大且灵活的方式来创建动态的 HTML 页面。通过理解和掌握其核心概念和高级功能,你可以在 Web 开发中更加高效地工作。

  • 相关阅读:
    Python实现向量、矩阵运算(dot点积运算)
    使用亚马逊云服务器在 G4 实例上运行 Android 应用程序
    获取dateTimePicker的数值
    VUE基础知识五:组件的分类、组件间传值、事件调用等
    使用Python进行Base64编码和解码
    基于chatgpt的聊天机器人
    [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
    java Object 重写toString方法
    网络安全(黑客)自学
    torch lighting 设置多个优化器
  • 原文地址:https://blog.csdn.net/Rocky006/article/details/134245465