/ 知识库     / 试卷库

模板标签

标签是Django模板的重要构成部分,它可以在输出中创建文本,或通过循环或逻辑控制流程。

{% for %}标签:循环遍历列表/数据对象中的每个项目

定义视图:

def template_for(request):
    userlist=[{"name":"张三","age":17,"addtime":"2018-9-1"},
    {"name":"李四","age":18,"addtime":"2018-9-2"},
    {"name":"王五","age":19,"addtime":"2018-9-3"}]
    return render(request,"template_for.html",{"ulist":userlist})

定义模板:

<ul>
   {% for item in ulist %}
      <li>{{item.name}}-{{item.age}}-{{item.addtime}}</li>
   {% endfor %}
</ul>

{% if %}标签:条件判断

定义模板:

<ul>
    {% for item in ulist %}
    <li>
        {%if forloop.first%}
          <p>这是第一个元素</p>
        {%elif forloop.last%}
          <p>这是最后一个元素</p>
        {%endif%}
        {{item.name}}-{{item.age}}-{{item.addtime}}
    </li>
    {% endfor %}
</ul>

{% csrf_token %}标签:生成csrf_token标签,防止跨站请求攻击

{%csrf_token%}为单标签,即不需要有对应的结束标签。

跨站请求伪造(Cross Site Request Forgery,CSRF)是伪造客户端请求的一种攻击,即攻击者盗用某人身份,以其名义发送恶意请求。CSRF能够做的事情包括:以某人名义发送邮件、发消息、盗取账号等。

默认情况下,当使用django-admin startproject 命令创建工程时,CSRF防御机制就已经开启了。如果没有开启,可以在MIDDLEWARE设置中添加“django.middleware.csrf.CsrfViewMiddlewar”。

定义表单模板(使用{%csrf_token%}):

<form action="/user/login/" method="post">
    {% csrf_token %}
    <p>用户名:<input type="text" name="username"></p>
    <p>密码:<input type="password" name="pswd"></p>
    <p><input type="reset">  <input type="submit"></p>
</form>

定义视图:

def login(request):
  if request.method=="GET":
    return render(request,"template_csrf.html")
  elif request.method=="POST":
    name=request.POST.get("username")
    pswd=request.POST.get("pswd")
    return HttpResponse("<h1>OK!<h1>")

{% include %}标签:模板中包含其它模板内容

{%include%}标签允许在模板中包含其它模板的内容。标签的主要参数是所要包含的模板的名称,可以是一个变量或常量。当在多个页面中使用相同的代码时,可以考虑使用{%include%}标签。