Django——模板

简介: Django——模板

Django——模板

Django 提供一种动态生成 HTML 页面 —— 模板

1、模板语言

模板语言(DTL): 变量 , 注释 , 标签 , 过滤器 , 模板继承

1、变量

<body>
<!-- 这个是前端中的注释 -->
{# 这种是Django中模板语言的注释 #}
<div style="color: red">
    <p>变量</p>
    <p>姓名:{{ name }}</p>
    <p>年龄:{{ age }}</p>
    <p>性别:{{ gender }}</p>
</div>
<div style="color: blue">
    <p>调用函数</p>
    <p>{{ demo }}</p>
    <p>调用类</p>
    <p>{{ Demo.name }}</p>
    <p>{{ Demo.eat }}</p>
    <p>调用对象</p>
    <p>{{ ek.name }}</p>
    <p>{{ ek.eat }}</p>
</div>
<div>
    <p>列表</p>
    <p>{{ ll }}</p>
    <p>通过下标获取列表中的数据</p>
    <p>{{ ll.1 }}</p>
</div>
</body>
def template_view(request):
    name = '阿宸'
    age = 17
    gender = '男'
    # 可以将函数,类传递到 html 模板中
    def demo():
        return '你好呀'
    class Demo:
        def __init__(self):
            self.name = '尔康'
        def eat(self):
            return "等下一起去吃KFC"
    ek = Demo()
    ll = ['叶晓春','樱岛麻衣','境界']
    return render(request , 'template_demo.html' , locals())

2、过滤器

过滤器的格式:{{ 变量名|过滤器名称:数据}}

<body>
<div style="color: red">
    <p>default 过滤器</p>
    <p>当变量为空或者为 False 的时候响应为设置的默认值</p>
    {{ sex | default:'靓仔' }}<br>
    {{ age | default:'18' }}
</div>
<div style="color: green">
    <p>length 过滤器</p>
    <p>返回变量的长度</p>
    {{ name | length }}<br>
    {{ ll | length }}
</div>
<div style="color: black">
    <p>safe 过滤器</p>
    <p>可以将带有 html 标签的字符串进行格式转换 </p>
    {{ name | safe }}<br>
    {{ html_str }}
    {{ html_str | safe }}
</div>
<div style="color: #096">
    <p>rendom 过滤器</p>
    <p>在指定的列表中随机获取一个数据</p>
    {{ ll | random }}
</div>
</body>

自定义过滤器

在应用下创建 templatetags 包 , 在这个包内创建一个 py 文件

from django import template
register = template.Library()
# 自定义过滤器
# name 是定义过滤器名称的
@register.filter(name='max_number')
def num(num_1 , num_2):
    return max(num_1 , num_2)
<div style="color: #096">
    <p>自定义过滤器</p>
    {# 导入自定义过滤器的模块 #}
    {% load mytag %}
    {{ age | max_number:27 }}
</div>

3、流程控制

if 判断

{% if 判断条件 %}
……
{% elif 判断条件 %}
……
{% else %}
……
{% endif %}

for 循环

{% for 变量名 in 可迭代对象 %}
……
{% endfor %}
<p>if 判断</p>
{% if age > 18 %}
    <div style="color: red">{{ name }}</div>
{% else %}
    <div style="color: pink">{{ gender }}</div>
{% endif %}
<div>
    <p>for 循环</p>
    {% for i in ll %}
        {# forloop 循环信息 #}
{#        {{ forloop }}#}
        <li>{{ forloop.counter0 }}:{{ i }}</li>
    {% endfor %}
</div>

4、include 标签

include 标签用户模板的包含

<div style="color: blue">
    <p>模板A</p>
    <p>作者:{{ name }}</p>
    <p>籍贯:{{ add }}</p>
    <p>联系地址:{{ tel_addr }}</p>
</div>
<div>
    {#  {% include 'include_demo.html' %} #}
    {#  {% include 'include_demo.html' with 导入模板参数 %} #}
    {% include 'include_demo.html'  with  name='ac' add='广东' tel_addr='广州天河花城大道'%}
</div>

5、自定义 inclusion_tag

制作局部的 html 标签

局部标签中的内容需要通过模板引擎来制作

# 自定义 inclusion_tag
# inclusion_tag 制定局部标签在哪一个文件中
@register.inclusion_tag('tag.html')
def tag_demo():
    ls = ['?:','境界','樱岛麻衣','。。','叶晓春']
    return locals()
<ul>
    {% for l in ls %}
        <li>{{ l }}</li>
    {% endfor %}
</ul>
<div>
    {% load mytag %}
    {# 使用自定义的局部标签 , 标签的名称就是自定义标签的函数名 #}
    {% tag_demo %}
</div>

6、模板继承

子模板继承语法: {% extends '父模板文件名' %}

重写模板:{% block 名称 %}{% endblock 名称 %} 被这个标签包含的 , 子模板可以重写

<body>
<div>
    <p>阿宸好帅</p>
</div>
{% block content %}
<div>
    <p>等下那个一起去吃KFC</p>
    <p>尔康、樱岛麻衣</p>
</div>
{% endblock content %}
<div>
{% block neiron %}
{% endblock neiron %}
</div>
</body>
{# 继承模板页面 #}
{% extends 'f_extend.html' %}
{# 重写父模板中的内容 #}
{% block content %}
<div>
    <p>樱岛麻衣:我还有倒三角</p>
</div>
{% endblock content %}
{% block neiron %}
    <p>境界:看回放辣眼睛</p>
{% endblock %}


相关文章
|
7月前
|
SQL 前端开发 JavaScript
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
67 0
|
3月前
|
Java C++ Python
django 模板 过滤器
django 模板 过滤器
|
4月前
|
前端开发 JavaScript 数据库
python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
|
4月前
|
JSON 数据处理 API
Django后端架构开发:视图与模板的正确使用
Django后端架构开发:视图与模板的正确使用
43 1
|
4月前
|
前端开发 Python
Django模板
【8月更文挑战第19天】
32 3
|
4月前
|
自然语言处理 前端开发 数据处理
Django的模板系统
【8月更文挑战第13天】
32 2
|
4月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
147 0
|
4月前
|
前端开发 数据处理 开发者
解锁Django模板系统终极奥义!揭秘高效前端渲染秘籍,让你的网站秒变炫酷黑科技!
【8月更文挑战第31天】Django作为Python的高级Web框架,内置的模板系统支持动态HTML渲染。本文通过在线书店案例,详细介绍Django模板系统的设置与高效渲染技巧,包括创建模板文件、编写视图函数及URL配置。通过合理使用过滤器、深度查询和模板继承等技巧,提升前端渲染效率和安全性,优化Web应用开发流程。
30 0
|
4月前
|
安全 JavaScript 前端开发
Django入门到放弃之模板及标签
Django入门到放弃之模板及标签
|
6月前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用合集之基于django应用模板创建的FC,如何配置数据库
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。