Django模板 小灰灰 2022-09-12 03:53 181阅读 0赞 ## 一、模板的组成 ## **组成:HTML代码+逻辑控制代码** ## 二、逻辑控制代码 ## ### 1、变量:使用双大括号引起来的变量 例:<p>\{ \{name\}\}</p> ### <!--HTML模板--> <body> <h1 style="color: crimson">{ { yeas }}--{ { month}}--{ { day }}</h1> </body> # python渲染 def dte(req, yeas, month, day): return render(req, 'index1.html', {'yeas': yeas, 'month': month, 'day': day}) ### 2、深度变量查找之句点号 ### 模板不光能解析处理简单的字符串,还能处理更加复杂的数据结构,例如:list、dictionary和自定义的对象等。在 Django 模板中遍历复杂数据结构的关键是句点字符 (.) **列表:** def demo(request): lis = ['张三', '李四', '王五'] return render(request, 'demo.html', {'lis': lis}) <div>这次展现的是列表第一个值----{ {lis.1}}</div> ![f58d0b3c061470cf16d204050e556361.png][] **字典:** <div>这次展现的是字典的值----{ { map.name }}</div> zidian = {'name': "张三", "age": "12", "sex": "男"} return render(request, 'demo.html', {'map': zidian}) **对象:** ![复制代码][48304ba5e6f9fe08f3fa1abda7d326ab.png] # 人物类 class Admin: def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex def jieshao(self): return '我的名字是%s,性别%s,今年%s岁' % (self.name, self.sex, self.age) ![复制代码][48304ba5e6f9fe08f3fa1abda7d326ab.png] # view zhangsan = Admin("张三","12","男") return render(request, 'demo.html', {'zs': zhangsan}) <div>这次展示的是自定义对象的方法----{ { zs.jieshao }}</div> ### 3、变量过滤器(filter) ### 语法:\{ \{ obj | filter :parem\}\}------》\{ \{变量 | 过滤器函数 :参数\}\} ![复制代码][48304ba5e6f9fe08f3fa1abda7d326ab.png] <!--常用过滤器--> <!-- 1 add : 给变量加上相应的值 2 addslashes : 给变量中的引号前加上斜线 3 capfirst : 首字母大写 4 cut : 从字符串中移除指定的字符 5 date : 格式化日期字符串 6 default : 如果值是False,就替换成设置的默认值,否则就是用本来的值 7 default_if_none: 如果值是None,就替换成设置的默认值,否则就使用本来的值 --> ![复制代码][48304ba5e6f9fe08f3fa1abda7d326ab.png] ![复制代码][48304ba5e6f9fe08f3fa1abda7d326ab.png] <div>这次展示的是自定义对象的年龄加20----{ { zs.age|add:20 }}</div> <div>字符串第一个大写{ { str|capfirst }}</div> <div>字符串移除指定字符{ { str|cut:" " }}</div> <div>时间格式控制{ { date|date:"Y-m-d" }}</div> render(request, 'demo.html', {'strs': ''}) <div>空值则替换{ { strs|default:'空的列表'}}</div> # 页面展示为“空的列表“ string = '<a href="12345/12345"> 12345</a>' <div>渲染HTML标签{ { strs|safe}}</div> <!--safe 会把标签渲染到页面而不是字符串--> {% autoescape off %} <div>{ { strs }}</div> {% endautoescape %} <!--这种渲染会直接渲染出a标签和safe相同--> <!-- 显示渲染值大小{ { a|filesizeformat }} 显示第一个值{ { a|first }} 显示长度{ { a|length }} 切割(参数为负值则从后往前切){ { a|slice:"3" }}--> ![复制代码][48304ba5e6f9fe08f3fa1abda7d326ab.png] ### 4、控制语句之tag标签的使用 ### 语法:\{% 语句 %\} * **if--elif--else 判断** ![复制代码][48304ba5e6f9fe08f3fa1abda7d326ab.png] <!--if判断语句 --> {% if zhangsan.age > 30 %} <h1>{ { zhangsan.name }}</h1> {% elif zhangsan.age > 10 %} <h1>{ { zhangsan.jieshao }}</h1> {% else %} <h1>{ { zhangsan.name }}年龄没超过10</h1> {% endif %} ![复制代码][48304ba5e6f9fe08f3fa1abda7d326ab.png] * **if嵌套** ![复制代码][48304ba5e6f9fe08f3fa1abda7d326ab.png] <!--if判断语句嵌套 --> {% if zhangsan.age > 30 %} {% if zhangsan.age < 50 %} <!--里层判断--> <h1>{ { zhangsan.name }}的年龄在30-50之间</h1> {% else %} <h1>{ { zhangsan.name }}的年龄大于50</h1> {% endif %} <!--每个end每个标签的结束标志--> {% elif zhangsan.age > 10 %} <h1>{ { zhangsan.jieshao }}</h1> {% else %} <h1>{ { zhangsan.name }}年龄没超过10</h1> {% endif %} ![复制代码][48304ba5e6f9fe08f3fa1abda7d326ab.png] * **for循环** ![复制代码][48304ba5e6f9fe08f3fa1abda7d326ab.png] <!--forloop.counter 循环计数器, counter0从0开始计数, forlooprevcounter倒序来 forloop.first第一次循环换返回true,否则返回false --> <ul> {% for i in lis %} {% if forloop.first %} <li class="fir"> {% else %} <li class="det"> {% endif %} { { i }} </li> {% empty %} <!--empty 用来判断是否为空列表--> <h1>没有数据</h1> {% endfor %} </ul> ![复制代码][48304ba5e6f9fe08f3fa1abda7d326ab.png] * **csrf\_token和url标签** <form action="{% url "login"%}" > <input type="text"> <input type="submit"value="提交"> {%csrf_token%} </form> * \{%csrf\_token%\}:防治跨站攻击验证 * \{%url "引用地址"%\}:引用路由配置 * ** \{%with%\} :替换引用名** {% with str=lis123456 %} { { str }} {% endwith %} * **\{%verbatim%\}:禁止渲染,原样[ python教程][python]展现** 小白技术分享 [f58d0b3c061470cf16d204050e556361.png]: /images/20220828/abd0160c93344e289ece2005b99f6043.png [48304ba5e6f9fe08f3fa1abda7d326ab.png]: /images/20220828/ce426d42336d449eb399a9a9733ea936.png [python]: https://www.xin3721.com/eschool/pythonxin3721/
还没有评论,来说两句吧...