首页 > 其他 > 详细

2019.03.24 模板语法变量和块

时间:2019-03-24 14:25:49      阅读:87      评论:0      收藏:0      [点我收藏+]

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

 

2019.03.24 模板语法变量和块

原文:https://www.cnblogs.com/Py-king/p/10587991.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!