博客信息

Python Django 模板层(模板语法)

发布时间:『 2019-08-20 02:28』  博客类别:Python  阅读(697)

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

 

相关代码

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'staticread',
    'principle',
    'stu'
]


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^staticread/', include('staticread.urls')),
    url(r'^principle/', include('principle.urls')),
    url(r'^stu/', include('stu.urls'))
]


urlpatterns = [
    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', 'today':datetime.datetime.today(), 'hlist': ['a1', 'a2']})


Html页面

<h3>访问字典值</h3>
    姓名:{{ obj.uname }},年龄:{{ obj.pwd }}
    ------{{ user.pwd }}
    <h3>访问对象属性</h3>
    {{ today.year }}-{{ today.month }}-{{ today.day }}
    <h3>访问对象的方法(不能有参数)</h3>
    {{ title.upper }}
    <h3>访问列表</h3>
    {{ hlist.1 }}

 

输入

http://127.0.0.1:8000/stu/getdata/

测试

小李飞刀_Python

 

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

 

相关代码

urlpatterns = [
    url(r'^getdata/$', views.getdata_view),
    url(r'^getdata2/$', views.getdata2_view),
]


def getdata2_view(request):
    # persons = [{'name':'zs','age':11},{'name':'ls','age':22},{'name':'ww','age':33}]
    persons = []
    items = {'a':1,'b':2,'c':3}
    return render(request,'list.html',{'person_list':persons,'d':items,'i':250,'name':'<span style="color: red;font-size: 60px;">小李飞刀</span>'})


<h2>for标签</h2>
{#(注:循环序号可以通过{{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 %}

<h2>for....empty</h2>
{#for 标签带有一个可选的{% empty %} 从句,以便在给出的组是空的或者没有被找到时,进行操作。#}
{% for person in person_list %}
    <p>{{ person.name }}</p>

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

<h2>if标签</h2>
{#{% if %}支持and or not 条件判断(注意==左右空格)#}
{% if i > 300 %}
    <p>大于{{ i }}</p>
{% elif i == 200  %}
    <p>等于{{ i }}</p>
{% else %}
    <p>小于{{ i }}</p>
{% endif %}

<h2 style="color: red">自动转义标签</h2>
{#- 自动转义:将HTML自动转换成普通字符串输出。不进行标签解析。#}
{#< 会转换为<#}
{#> 会转换为>#}
{#' (单引号) 会转换为'#}
{#" (双引号)会转换为 "#}
{#& 会转换为 &#}

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


<h2>注释</h2>
单行注释 {#...#}
多行注释 {% comment %}...{% endcomment %}

	{% comment %}
    	{% for user in users %}
    	{% for k,v in user.items %}

    	   {{ forloop.parentloop.counter }} --{{forloop.counter  }}--{{ k }}--{{ v }}<br>

    	{% endfor %}
    	{% endfor %}

	{% endcomment %}


测试结果

小李飞刀_Python


注意:那个script脚本攻击,那个自动转义标签十分使用;


over......


关键字:     Python       Django  

备案号:湘ICP备19000029号

Copyright © 2018-2019 javaxl晓码阁 版权所有