lxinghua

博客园 首页 新随笔 联系 订阅 管理
  117 随笔 :: 0 文章 :: 0 评论 :: 7553 阅读

一、常用标签

模板标签:标签在渲染的过程中提供任意的逻辑

标签语法:由{% %} 来定义,例如:{%tag%} {%endtag%}

模板标签的例子:

1. if

{% if name == 'python' %}
        这个是python的页面
{% elif  name == 'dhango' %}
        这是django的页面
{% else %}
        哈哈哈  是{{ name }}的呢
{% endif %}

2. for

{% for i in ls %}
        {% if forloop.counter == 1 %}
                <li>这个是第一个值{{ i }}</li>
        {% else %}
                <li>{{ i }}</li>
        {% endif %}  
{% endfor %}  

3. url页面转换的例子

    path(‘index5/’, views.index_5),
    path('article_new/', views.article_new, name='new_article'),
    path('test/<int:t_id>/', views.test, name='test')
<a href="/book/index5/">到过滤器那个页面</a><br>
<a href="{% url 'new_article' %}">新的文章的</a><br>   # url无参数传递
<a href="{% url 'test'  123 %}">url加参数传递</a>      # url有参数传递,在参数的传递中,因点击a标签时不能直接输入对应参数,所以需要在a标签中添加对应的参数,便于views.py文件进行识别传递

4. with

{% with test_name as tn %}
        11111{{ tn }} <br>
        22222{{ tn }}
{% endwith %}

5. autoescape

原始的: {{ html }} <br>
过滤器方式: {{ html |safe }}<br>
标签方式:
{% autoescape off %}
        {{ html }} <br>
{% endautoescape %}

6. 注释标签

{#注释标签,单行注释#}
{% comment %}
被注释的内容
多行注释
{% endcoment %}

二、模板的继承与引用

Django模版引擎中最强大也是最复杂的部分就是模版继承。模版继承可以让你创建一个基本的“骨架”模版,它包含你站点中的全部元素,并且可以定义能够被子模版覆盖的blocks。

模板基础的例子

1. 创建是哪个模板文件,base.html 模板继承页, indexxx.html 在这个模板中实现继承和引用, ss.html 模板的引用页

2. base.html的内容,首先在base.html文件尽可能多的使用{% block %} {% endblock %},这样在子项目继承时,可能更细化的继承父模板的各个项目

2. ss.html的内容

复制代码
<!DOCTYPE html>
<html lang="en">
>
<head>
    <meta chaerset="UTF-8">
    <title>{% blcok title %}ss页面{% endblock %}</title>
</head>
<body>
    {% block ss %}
        这是ss页面内容!
    {% endblock %}
</body>
</html>
复制代码

3. indexxx.html的内容,首先给出继承的父模板{% extends ‘base.html’ %}  然后采用{% block %}[修改内容]{% endblock %},继承父模板的格式并进行对应内容修改

复制代码
# 接上图

{% block demo %}
    这是demo修改后的演示内容!
    {% include 'ss.html' %}    # 使用include导入需要引用的模版
    {% block ss %}
        这是在include导入ss.html模板后,引用其ss格式并修改后的内容!
    {% endblock %}
{% endblock %}
复制代码

总结:

模板继承使用extends标签实现。通过使用block来给子模板开放接口。

1. extengs必须是模板中的第一个出现的标签

2. 子模板中的所有内容,必须出现在父模板定义好的block中,否则django将不会渲染

3. 如果出现重复代码,就应该考虑使用模板

4. 尽肯能多的定义block,方便子模板实现更细的需求

5. 如果在某个block中,要使用父模板的内容,使用block.super获取。

posted on   興華  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示