Django:模板系统
一,常用语法 只需要记两种特殊符号: {{? }}和?{% %} 变量相关的用{{}},逻辑相关的用{%%}。 二,常量 {{ 变量名 }} 变量名由字母数字和下划线组成。 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值。 view中代码 = [11,22,33= {:
</span><span style="color: #0000ff">class</span><span style="color: #000000"> Person(object):
</span><span style="color: #0000ff">def</span> <span style="color: #800080">__init__</span><span style="color: #000000">(self,name,age):
self.name </span>=<span style="color: #000000"> name
self.age </span>=<span style="color: #000000"> age
</span><span style="color: #0000ff">def</span><span style="color: #000000"> dream(self):
</span><span style="color: #0000ff">return</span> <span style="color: #800000">"</span><span style="color: #800000">{} is dream...</span><span style="color: #800000">"</span><span style="color: #000000">.format(self.name)
Alex </span>= Person(name=<span style="color: #800000">"</span><span style="color: #800000">Alex</span><span style="color: #800000">"</span>,age=34<span style="color: #000000">)
Egon </span>= Person(name=<span style="color: #800000">"</span><span style="color: #800000">Egon</span><span style="color: #800000">"</span>,age=9000<span style="color: #000000">)
Eva_J </span>= Person(name=<span style="color: #800000">"</span><span style="color: #800000">Eva_J</span><span style="color: #800000">"</span>,age=18<span style="color: #000000">)
person_list </span>=<span style="color: #000000"> [Alex,Egon,Eva_J]
</span><span style="color: #0000ff">return</span> render(request,<span style="color: #800000">"</span><span style="color: #800000">template_test.html</span><span style="color: #800000">"</span>,{<span style="color: #800000">"</span><span style="color: #800000">l</span><span style="color: #800000">"</span>: l,<span style="color: #800000">"</span><span style="color: #800000">d</span><span style="color: #800000">"</span>: d,<span style="color: #800000">"</span><span style="color: #800000">person_list</span><span style="color: #800000">"</span>: person_list})</pre>
模板中支持的写法: {
{{ person_list.0.dream }}
三,Filters 语法: {{ value|filter_name:参数 }} default {{ value:default: }}
length {{ value|length }} '|'左右没有空格没有空格没有空格 返回value的长度,如 value= filesizeformat '13 KB',? {{ value|filesizeformat }}
slice
{{value|slice:"2:-1"}}
date
{{ value|date:"Y-m-d H:i:s"}}
safe Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。 比如: value = "点我" {{ value|safe}}
四,truncatechars 如果字符串字符多于指定的字符数量,那么会被截断。
{{ value|truncatechars:9}}
五,自定义filter 自定义过滤器只是带有一个或两个参数的Python函数:
例如,在过滤器{{var | foo:“bar”}}中,过滤器foo将传递变量var和参数“bar”。 自定义filter代码文件摆放位置: app01/
/
views.py
编写自定义filter django =@register.filter(name=<span style="color: #800000">"<span style="color: #800000">cut<span style="color: #800000">"<span style="color: #000000">)
<span style="color: #0000ff">def<span style="color: #000000"> cut(value,arg): <span style="color: #0000ff">return value.replace(arg,<span style="color: #800000">""<span style="color: #000000">) @register.filter(name=<span style="color: #800000">"<span style="color: #800000">addSB<span style="color: #800000">"<span style="color: #000000">) 使用自定义filter {# 先导入我们自定义filter那个文件 #}
{% load app01_filters %}
{# 使用我们自定义的filter #} 六,Tags for
for循环可用的一些参数:
{% if user_list %} 用户人数:{{ user_list|length }} {% elif black_list %} 黑名单数:{{ black_list|length }} {% else %} 没有用户 {% endif %} 当然也可以只有if和else {% if user_list|length > 5 %}
七座豪华SUV
{% else %}
黄包车
{% endif %}
if语句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判断。 with 定义一个中间变量 {% with total=business.employees.count %}
{{ total }} employee{{ total|pluralize }}
{% endwith %}
七,csrf_token这个标签用于跨站请求伪造保护。 在页面的form表单里面写上{% csrf_token %} 注释{# ... #}
八,模板
>
>
content=>
content=>
这是母板的标题{% block page-main %<span style="color: #000000">}{ % endblock %<span style="color: #000000">}母板底部内容<span style="color: #000000">{% block page-js %<span style="color: #000000">} { % endblock %<span style="color: #000000">}注意:我们通常会在母板中定义页面专用的CSS块和JS块,方便子页面替换。 九,继承母版 {% extends <span style="color: #800000">'<span style="color: #800000">layouts.html<span style="color: #800000">' %}
十,block块 通过在母板中使用 在子页面中通过定义母板中的block名来对应替换母板中相应的内容。 {% block page-main %}
世情薄 人情恶 雨送黄昏花易落 {% endblock %}十一,组件 可以将常用的页面内容如导航条,页尾信息等组件保存在单独的文件中,然后在需要使用的地方按如下语法导入即可。 {% include 'navbar.html' %}
十二,静态文件相关 {% load static %}
引用JS文件时使用: {% load static %}
相关内容
|