• 2019.03.24 模板语法变量和块


    django模板语言:Django Template Language(DTL)

    取值还是稍微有点区别的,字典,列表,都是直接点出来的

    都是由vies中传过来的参数   {{ 变量名}}

    • {{...}} :变量标签

    • {% ... %} :块标签

    变量标签

    1. 主要用于取值

    # 访问字典值

    render(request,'list.html',{'user':{'name':'张三','age':10}})
    姓名:{{ user.name }},年龄:{{ user.age }}

    # 访问对象属性

    render(request,'list.html',{'today':datetime.datetime.today()})
    {{ today.year }}-{{ today.month }}-{{ today.day }}

    # 访问对象的方法(不能有参数)

    render(request,'list.html',{'title':'hello world'})

    {{ title.upper }}

    # 访问列表

    render(request,'list.html',{'items':['a1','a2']})

    {{items.1}}

    配置URL


    from django.conf.urls import url
    from django.contrib import admin
    import views
    urlpatterns = [
      url(r'^admin/', admin.site.urls),
      url(r'getdata/',views.getdata_view),
    ]

    创建视图



    def getdata_view(request):
      user = User('zhangsan','123')


      return render(request,'list.html',{'user':{'pwd':'456'},'obj':user,'title':'helloworld','hlist':['a1','a2']})

    创建模板


    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
    </head>
    <body>
      <table>
          <tr>
              <td>{{ user.pwd }}</td>
              <td>{{ obj.pwd }}</td>
              <td>{{ title.upper }}</td>
              <td>{{ hlist.1 }}</td>
          </tr>
      </table>

    </body>
    </html>

     那块级就更好玩了,可以循环的话,那就是说可以根据出生成

    出多个标签之类的吧 

    块标签{%...%}

    for标签

    (注:循环序号可以通过{{forloop}}显示)

    <h3>循环取值1</h3><hr>
    {% for item in person_list %}
      <p>{{ item.name }},{{ item.age }}</p>
    {% endfor %}

    <h3>循环取值2:倒序</h3><hr>
    {% for item in person_list reversed %}
      <!--序号从1开始-->
      <p>{{ forloop.counter }}----->{{ item.name }},{{ item.age }}</p>
      <!--序号从0开始-->
      <p>{{ forloop.counter0 }}----->{{ item.name }},{{ item.age }}</p>
      <!-- 序号倒序 -->
      <p>{{ forloop.revcounter }}----->{{ item.name }},{{ item.age }}</p>
    {% endfor %}

    <h3>循环取值3:字典</h3><hr>
    {% for k,v in d.items %}
      <p>{{ k }},{{ v}}</p>
    {% endfor %}


    for....empty

    for 标签带有一个可选的{% empty %} 从句,以便在给出的组是空的或者没有被找到时,进行操作。



    {% for person in person_list %}
      <p>{{ person.name }}</p>

    {% empty %}
      <p>sorry,no person here</p>
    {% endfor %}

    if标签

    {% if %}支持and or not 条件判断(注意==左右空格)


    {% if i > 300 %}
      <p>大于{{ i }}</p>
    {% elif i == 200 %}
      <p>等于{{ i }}</p>
    {% else %}
      <p>小于{{ i }}</p>
    {% endif %}

    csrf_token:这个标签用于跨站请求伪造保护


    <h3>scrf_token</h3>
    <form action="/tag/" method="post">
      {% csrf_token %}
      <p><input type="text" name="haiyan"></p>
      <input type="submit">
    </form>

    自动转义标签

    • 自动转义:将HTML自动转换成普通字符串输出。不进行标签解析。


    < 会转换为&lt;
    > 会转换为&gt;
    ' (单引号) 会转换为&#39;
    " (双引号)会转换为 &quot;
    & 会转换为 &amp;



    def getdata_view(request):

      return render(request,'list.html',{'hello':'<h1>张杰</h1>'})

    {% autoescape off %}
      Hello {{ name }}
    {% endautoescape %}

    注释


    单行注释 {#...#}
    多行注释 {% comment %}...{% endcomment %}

    {% comment %}
      {% for user in users %}
      {% for k,v in user.items %}
     
        {{ forloop.parentloop.counter }} --{{forloop.counter }}--{{ k }}--{{ v }}<br>
       
      {% endfor %}
      {% endfor %}
     
    {% endcomment %}
  • 相关阅读:
    Javascript DOM 编程艺术读书笔记16/03/25
    2014 Multi-University Contest 1.1 hdu4861 打表找规律
    汇编小记16/3/23
    汇编小记16/3/22
    hdoj 4940 强连通图
    Head FIRST HTML & CSS 16/03/17
    html&css一些有用的网站整理
    dosbox+debug 模拟dos
    汇编小记16/3/15
    解决windwos另存为,保存文件时无法选择“桌面”文件夹
  • 原文地址:https://www.cnblogs.com/Py-king/p/10587991.html
Copyright © 2020-2023  润新知