Django模板

小灰灰 2022-09-12 03:53 328阅读 0赞

一、模板的组成

组成:HTML代码+逻辑控制代码

二、逻辑控制代码

1、变量:使用双大括号引起来的变量 例:

{ {name}}

  1. <!--HTML模板-->
  2. <body>
  3. <h1 style="color: crimson">{
  4. { yeas }}--{
  5. { month}}--{
  6. { day }}</h1>
  7. </body>
  8. # python渲染
  9. def dte(req, yeas, month, day):
  10. return render(req, 'index1.html', {'yeas': yeas, 'month': month, 'day': day})

  2、深度变量查找之句点号

模板不光能解析处理简单的字符串,还能处理更加复杂的数据结构,例如:list、dictionary和自定义的对象等。在 Django 模板中遍历复杂数据结构的关键是句点字符 (.)

列表:

  1. def demo(request):
  2. lis = ['张三', '李四', '王五']
  3. return render(request, 'demo.html', {'lis': lis})
  4. <div>这次展现的是列表第一个值----{
  5. {lis.1}}</div>

f58d0b3c061470cf16d204050e556361.png

  字典:

  1. <div>这次展现的是字典的值----{
  2. { map.name }}</div>
  3. zidian = {'name': "张三", "age": "12", "sex": "男"}
  4. return render(request, 'demo.html', {'map': zidian})

  对象:

复制代码

  1. # 人物类
  2. class Admin:
  3. def __init__(self, name, age, sex):
  4. self.name = name
  5. self.age = age
  6. self.sex = sex
  7. def jieshao(self):
  8. return '我的名字是%s,性别%s,今年%s岁' % (self.name, self.sex, self.age)

复制代码

  1. # view
  2. zhangsan = Admin("张三","12","男")
  3. return render(request, 'demo.html', {'zs': zhangsan})
  4. <div>这次展示的是自定义对象的方法----{
  5. { zs.jieshao }}</div>

  3、变量过滤器(filter)

 语法:{ { obj | filter :parem}}———》{ {变量 | 过滤器函数 :参数}}

复制代码

  1. <!--常用过滤器-->
  2. <!--
  3. 1 add : 给变量加上相应的值
  4. 2 addslashes : 给变量中的引号前加上斜线
  5. 3 capfirst : 首字母大写
  6. 4 cut : 从字符串中移除指定的字符
  7. 5 date : 格式化日期字符串
  8. 6 default : 如果值是False,就替换成设置的默认值,否则就是用本来的值
  9. 7 default_if_none: 如果值是None,就替换成设置的默认值,否则就使用本来的值
  10. -->

复制代码

复制代码

  1. <div>这次展示的是自定义对象的年龄加20----{
  2. { zs.age|add:20 }}</div>
  3. <div>字符串第一个大写{
  4. { str|capfirst }}</div>
  5. <div>字符串移除指定字符{
  6. { str|cut:" " }}</div>
  7. <div>时间格式控制{
  8. { date|date:"Y-m-d" }}</div>
  9. render(request, 'demo.html', {'strs': ''})
  10. <div>空值则替换{
  11. { strs|default:'空的列表'}}</div> # 页面展示为“空的列表“
  12. string = '<a href="12345/12345"> 12345</a>'
  13. <div>渲染HTML标签{
  14. { strs|safe}}</div> <!--safe 会把标签渲染到页面而不是字符串-->
  15. {% autoescape off %}
  16. <div>{
  17. { strs }}</div>
  18. {% endautoescape %} <!--这种渲染会直接渲染出a标签和safe相同-->
  19. <!-- 显示渲染值大小{
  20. { a|filesizeformat }}
  21. 显示第一个值{
  22. { a|first }}
  23. 显示长度{
  24. { a|length }}
  25. 切割(参数为负值则从后往前切){
  26. { a|slice:"3" }}-->

复制代码

4、控制语句之tag标签的使用

  语法:{% 语句 %}

  • if—elif—else 判断

    复制代码

    1. <!--if判断语句 -->
    2. {% if zhangsan.age > 30 %}
    3. <h1>{
    4. { zhangsan.name }}</h1>
    5. {% elif zhangsan.age > 10 %}
    6. <h1>{
    7. { zhangsan.jieshao }}</h1>
    8. {% else %}
    9. <h1>{
    10. { zhangsan.name }}年龄没超过10</h1>
    11. {% endif %}

    复制代码

  • if嵌套

    复制代码

    1. <!--if判断语句嵌套 -->
    2. {% if zhangsan.age > 30 %}
    3. {% if zhangsan.age < 50 %} <!--里层判断-->
    4. <h1>{
    5. { zhangsan.name }}的年龄在30-50之间</h1>
    6. {% else %}
    7. <h1>{
    8. { zhangsan.name }}的年龄大于50</h1>
    9. {% endif %} <!--每个end每个标签的结束标志-->
    10. {% elif zhangsan.age > 10 %}
    11. <h1>{
    12. { zhangsan.jieshao }}</h1>
    13. {% else %}
    14. <h1>{
    15. { zhangsan.name }}年龄没超过10</h1>
    16. {% endif %}

    复制代码

  • for循环

    复制代码

    1. <!--forloop.counter 循环计数器,
    2. counter0从0开始计数,
    3. forlooprevcounter倒序来
    4. forloop.first第一次循环换返回true,否则返回false
    5. -->
    6. <ul>
    7. {% for i in lis %}
    8. {% if forloop.first %}
    9. <li class="fir">
    10. {% else %}
    11. <li class="det">
    12. {% endif %}
    13. {
    14. { i }}
    15. </li>
    16. {% empty %} <!--empty 用来判断是否为空列表-->
    17. <h1>没有数据</h1>
    18. {% endfor %}
    19. </ul>

    复制代码

  • csrf_token和url标签

    1. <form action="{% url "login"%}" >
    2. <input type="text">
    3. <input type="submit"value="提交">
    4. {%csrf_token%}
    5. </form>
    • {%csrf_token%}:防治跨站攻击验证
    • {%url “引用地址”%}:引用路由配置
  • {%with%} :替换引用名

    1. {% with str=lis123456 %}
    2. {
    3. { str }}
    4. {% endwith %}
  • {%verbatim%}:禁止渲染,原样 python教程展现

小白技术分享

发表评论

表情:
评论列表 (有 0 条评论,328人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Django模板语法(django10)

    最近在折腾Django,看到官网的Django模板文章写得挺详细的,就想着翻译下以加深自己的学习印象,如果能帮助到大家我也会感到很欣慰,以下是译文。 这篇文章主要讲解了Dja

    相关 Django教程 —— Django模板

    引言 > 如何向请求者返回一个漂亮的页面呢? > > 肯定需要用到 `html、css` ,如果想要更炫的效果还要加入 `js`,问题来了,这么一堆字符串全都写到视图中

    相关 Django模板

    一、模板的组成 组成:HTML代码+逻辑控制代码 二、逻辑控制代码 1、变量:使用双大括号引起来的变量 例:<p>\{ \{name\}\}</p>

    相关 Django模板

    在前面的几节中我们都是使用简单的  django.http.HttpResponse 来把内容显示到网页上来的,本节中将讲解如何使用渲染模板的方法来显示内容 本节的