最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

Django模板层

来源:博客园


(资料图片)

目录
  • Django模板层
    • 一、关于模板语法
    • 二、模板层之标签
    • 二、自定义过滤器、标签
    • 三、模板的继承与导入
    • 四、模板层前期准备

Django模板层

一、关于模板语法

针对需要加括号调用的名字,模板语法会自动加括号调用,只需要写名字就行
{{}}  # 主要与数据相关{%%}  # 主要与逻辑相关{##}  # 模板语法的注释
模板语法传值# 方式1:精准传值 不浪费资源 针对多资源的传递书写麻烦return render(request,"demo02.html", {"n1":name, "a1":age})# 方式2:将函数名称空间中所有名字全部传递 名字过于多的时候有优势 但是会浪费资源return render(request,"demo02.html", locals())
# 模板语法传值特性1.基本数据类型正常展示2.文件对象也可以用展示并调用方法3.函数名会自动加括号执行并将返回值展示到页面上(不支持额外传参)4.类名也会自动加括号调用对象则不会

二、模板层之标签

# if 条件语法{% if 条件1(可以自己写也可以用传递过来的数据) %}        

今天又是周三了

{% elif 条件2(可以自己写也可以用传递过来的数据) %}

百日冲刺

{% else %}

没多少时间了!

{% endif %}
# for循环{% for k in t1 %}        {% if forloop.first %}            

这是我的第一次循环{{ k }}

{% elif forloop.last %}

这是我的最后一次循环{{ k }}

{% else %}

这是中间循环{{ k }}

{% endif %} {% empty %}

你给我传的数据是空的无法循环取值(空字符串、空列表、空字典)

{% endfor %}
django模板语法取值操作>>>:只支持句点符{{ d1.hobby.2.a1 }}  # 句点符既可以点索引也可以点键{% with d1.hobby.2.a1 as h %}  # 复杂数据获取之后需要反复使用可以起别名        {{ h }}{% endwith %}

二、自定义过滤器、标签

如果想要自定义一些模板语法 需要先完成下列的三步走战略1.在应用下创建一个名字必须叫templatetags的目录2.在上述目录下创建任意名称的py文件3.在上述py文件内先编写两行固定的代码from django import templateregister = template.Library()
# 自定义过滤器(最大只能接收两个参数)@register.filter(name="myadd")def func1(a, b):    return a + b{% load mytags %}

{{ i|myadd:1 }}

# 自定义标签(参数没有限制)@register.simple_tag(name="mytag")def func2(a, b, c, d, e):    return f"{a}-{b}-{c}-{d}-{e}"{% load mytags %}{% mytag "jason" "kevin" "oscar" "tony" "lili" %}

三、模板的继承与导入

模板的继承(重要):多个页面有很多相似的地方 有两种方式,如下方式1:传统的复制粘贴方式2:模板的继承
# 模板的继承具体操作1.在模板中使用block划定子板以后可以修改的区域{% block 区域名称 %}{% endblock %}2.子板继承模板{% extends "home.html" %}{% block 区域名称 %}子板自己的内容{% endblock %}
模板中至少应该有三个区域:页面内容区、css样式区、js代码区子板也可以继续使用模板的内容 {{ block.super }}模板的导入:{% include "myform.html" %}

四、模板层前期准备

自带的sqlite3数据库对时间字段不敏感 有时候会展示错乱所以我们习惯切换成常见的数据库比如MySQL django orm并不会自动创建库所以需要提前准备好
2.单独测试django某个功能层默认不允许单独测试某个py文件如果想要测试某个py文件(主要models.py)测试环境1:pycharm提供的python console测试环境2:自己搭建(自带的test或者自己创建)
# 自己搭建测试环境方法步骤1.先创建py文件(django自带的test文件也可以的)2.拷贝manage.py前四行3.自己再加以下两行代码import djangodjango.setup()
django orm底层还是SQL语句 我们是可以查看的如果我们手上是一个QuerySet对象 那么可以直接点query查看SQL语句如果想查看所有orm底层的SQL语句也可以在配置文件添加日志记录

关键词: 前期准备 测试环境 这是我的