当前位置: 首页 > news >正文

Django之模板层

【1】模板之变量

        在Django模板中要想使用变量关键是使用点语法。

 

获取值的语法是:{{ 变量名 }} 

 

Python中所有的数据类型包括函数,类等都可以调用

【2】模板之过滤器

  • 过滤器语法
    • {{ obj | filter_name:param }}
      • obj:变量名字,filter_name:过滤器名称,param:变量
  • default过滤器
    • 如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值
    • 语法:{{ value | default:'onthing' }}
  • length过滤器
    • 返回值的长度。对列表和字符串都起作用
    • 语法:{{ value | length }}
  • filesizeformat过滤器
    • 将值格式化为一个人类可读的文件尺寸(例如:13KB,4.1MB等)
    • 语法:{{ value | filesizeformt }}
  • date过滤器
    • 如果value=datetime.datetime.now(),返回当前的时间
    • 语法:{{ value | date:"Y-m-d" }}
  • slice过滤器
    • 切分,如果value=' helloworld '
    • 语法:{{ value | slice:"2:6"}}
  • truncatechars过滤器
    • 如果字符串多于指定的字符数量,那么会被截断。截断的字符串将以(.....)结尾
    • 参数:要截断的字符数
    • 语法:{{ value | truncatechars:6}}
  • safe过滤器
    • 取消对HTML标签和js等语法标进行自动转义
    • 语法:{{ value | safe }}

在Django中有两种方法关闭HTML的自动转义:

        1、通过safe过滤器

        2、通过django内部的mark_safe方法:

        

from django.utils.safestring import mark_safedef index(request):res = mark_safe('<a>hello</a>')return render(request,'index.html')'''然后在index.html中使用{{ res }}查看结果'''

【3】模板之标签

        【3.1】for标签

        for标签:遍历每一个元素

        

        语法:

                

# 循环一个字典{% for user in user_dict %}<p>{{ user }}</p>
{% endfor %}{% for key,value in user_dict.items %}<p>{{ key }}:{{ value }}</p>
{% endfor %}{% for user in user_dict.items %}<p>{{ user }}</p>
{% endfor %}{% for user in user_dict.keys %}<p>{{ user }}</p>
{% endfor %}{% for user in user_dict.values %}<p>{{ user }}</p>
{% endfor %}'''
items:拿到字典key值和value值keys:只拿到字典的key值value:只拿到字典的value值
'''{% for user in user_dict %}<p>{{ forloop }}</p>
{% endfor %}'''
循环序号可以通过{{forloop}}显示指定{{forloop}}后会打印出以下的值{'parentloop': {}, 'counter0': 0, 'counter': 1, 'revcounter': 3, 'revcounter0': 2, 'first': True, 'last': False}counter0:代表的是索引数counter:代表是的顺序first:代表的第一个last:代表的最后一个
'''
        【3.2】for......empty标签

        for标签带有一个可选的{% empty %} 从句,以便在循环的对象为空或者没有找到时,可以有所操作

 

语法:

        

{% for person in person_list %}<p>{{ person.name }}</p>{% empty %}<p>sorry,no person here</p>
{% endfor %}'''
person_list为空或者找不到时会执行{% empty %}中的p标签的执行
'''
        【3.3】if标签

        {% if %}会对一个变量求值,如果它的值是True(存在,不为空,且不是false),对应的内容块会输出。总而言之就是和python中的if语句使用方法类似

 

语法:

        

def index(request):num=89
return render(request,'index.html'){% if num > 100 or num < 0 %}<p>无效</p>
{% elif num > 80 and num < 100 %}<p>优秀</p>
{% else %}<p>凑活吧</p>
{% endif %}

if语句支持 and、or、==、>、<、!=、<=、>=、in、not in、is、is not判断

        【3.4】with标签

        使用一个简单的名字缓存一个复杂的变量,简而言之就是起别名

 

语法:

        

def index(request):d = {'username':'kevin','age':18,'info':'这个人有点意思','hobby':[111,222,333,{'info':'NB'}]}
return render(request,'index.html')# with起别名
{% with d.hobby.3.info as nb  %}<p>{{ nb }}</p>在with语法内就可以通过as后面的别名快速的使用到前面非常复杂获取数据的方式<p>{{ d.hobby.3.info }}</p>
{% endwith %}

【4】模板之导入

  • 模板导入就是将一个html文件导入到另一个html文件之中
  • 语法
    • {% include ' 模板名称 ' %}
    •  在导入文件中写导入

【5】模板之继承

模板继承可以让您继承另一个模板的所有元素,还可以定义能够被字模板覆盖的block

  • 继承的语法:
    • {% extends '被继承的模板' %}

block标签定义了3个可以被字幕版内容填充的block。block模板告诉模板引擎:字幕版可能会覆盖掉模板中的这些位置

 

block独立块的语法:

        {% block 名字(随意) %}

                 ''要覆盖的内容''

        {% endblock %}

        

http://www.lryc.cn/news/231483.html

相关文章:

  • 社区论坛小程序系统源码+自定义设置+活动奖励 自带流量主 带完整的搭建教程
  • 2023亚太杯数学建模C题思路解析
  • acme在同一台服务器上设置多个Ali_key实现自动ssl申请和续期
  • 乐观锁与悲观锁
  • 【算法】堆排序
  • 51单片机应用从零开始(三)
  • 如何在 Nginx Proxy Manager(NPM)上部署静态网站
  • http的几种方法
  • var、let、const关键字的特性,以及let、const暂时性死区的作用
  • IDEA 高分辨率卡顿优化
  • 【AIGC】一起学习prompt提示词(4/4)【经典】【15种提示词技巧】
  • Linux实战一天一个小指令--《文件管理/文件查找》
  • CocosCreator3.8神秘面纱 CocosCreator 项目结构说明及编辑器的简单使用
  • JJJ:python学习笔记
  • SpringSecurity6从入门到上天系列第七篇:讲明白SpringBoot的自动装配完善上篇文章中的结论
  • ClickHouse 原理解析之基础知识总结
  • 最小花费——最短路
  • Spark DataFrame join后移除重复的列
  • NextJS工程部署到阿里云linux Ecs
  • 汽车以太网IOP测试新利器
  • 高防IP是什么?如何隐藏源站IP?如何进行防护?
  • ElasticSearch---查询es集群状态、分片、索引
  • Angular 使用教程——基本语法和双向数据绑定
  • 【ASP.NET】Hello World
  • AI创作系统ChatGPT网站源码+支持最新GPT-Turbo模型+支持DALL-E3文生图/AI绘画源码
  • C#_查找图片(按键精灵找图)
  • C#中.NET Framework4.8 控制台应用通过EF访问新建数据库
  • 无防御香港服务器如何防CC
  • MyBatis的插件能在哪些地方进行拦截?
  • 【BUG库】 记录自己学习工作中遇到的程序BUG