Django模板

Django模板[Python基础]

一、模板的组成

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

二、逻辑控制代码

1、变量:使用双大括号引起来的变量 例:<p>{{name}}</p>

<!--HTML模板-->

<body>

<h2 style="color: crimson">{{ yeas }}--{{ month}}--{{ day }}</h2>

</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>

   字典:

<div>这次展现的是字典的值----{{ map.name }}</div>

 zidian = {"name": "张三", "age": "12", "sex": ""}

return render(request, "demo.html", {"map": zidian})

  对象:

# 人物类

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)

# view

zhangsan = Admin("张三","12","")

return render(request, "demo.html", {"zs": zhangsan})

<div>这次展示的是自定义对象的方法----{{ zs.jieshao }}</div>

  3、变量过滤器(filter)

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

<!--常用过滤器-->

<!--

1 add : 给变量加上相应的值

2 addslashes : 给变量中的引号前加上斜线

3 capfirst : 首字母大写

4 cut : 从字符串中移除指定的字符

5 date : 格式化日期字符串

6 default : 如果值是False,就替换成设置的默认值,否则就是用本来的值

7 default_if_none: 如果值是None,就替换成设置的默认值,否则就使用本来的值

-->

<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" }}-->

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

  语法:{% 语句  %}

  • if--elif--else 判断

    <!--if判断语句 -->

    {% if zhangsan.age > 30 %}

    <h2>{{ zhangsan.name }}</h2>

    {% elif zhangsan.age > 10 %}

    <h2>{{ zhangsan.jieshao }}</h2>

    {% else %}

    <h2>{{ zhangsan.name }}年龄没超过10</h2>

    {% endif %}

  • if嵌套

    <!--if判断语句嵌套 -->

    {% if zhangsan.age > 30 %}

    {% if zhangsan.age < 50 %} <!--里层判断-->

    <h2>{{ zhangsan.name }}的年龄在30-50之间</h2>

    {% else %}

    <h2>{{ zhangsan.name }}的年龄大于50</h2>

    {% endif %} <!--每个end每个标签的结束标志-->

    {% elif zhangsan.age > 10 %}

    <h2>{{ zhangsan.jieshao }}</h2>

    {% else %}

    <h2>{{ zhangsan.name }}年龄没超过10</h2>

    {% endif %}

  • for循环

    <!--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 用来判断是否为空列表-->

    <h2>没有数据</h2>

    {% endfor %}

    </ul>

  • 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%}:禁止渲染,原样展现

 

以上是 Django模板 的全部内容, 来源链接: utcz.com/z/537810.html

回到顶部