Django web框架之模板

Posted Pythia丶陌乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django web框架之模板相关的知识,希望对你有一定的参考价值。


1 模板:
什么是模板?
  html+模板语法

  模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签


2 模板语法:

1 变量:{{}}

深度查询: 通过句点符号 .

过滤器 filter

{{var|filter_name}}

  


2 标签: {% tag %}

for
if else

for标签

遍历每一个元素:

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

  

可以利用{% for obj in list reversed %}反向完成循环。

遍历一个字典:

{% for key,val in dic.items %}
    <p>{{ key }}:{{ val }}</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 %}会对一个变量求值,如果它的值是“True”(存在、不为空、且不是boolean类型的false值),对应的内容块会输出。

技术分享
{% if num > 100 or num < 0 %}
    <p>无效</p>
{% elif num > 80 and num < 100 %}
    <p>优秀</p>
{% else %}
    <p>凑活吧</p>
{% endif %}
技术分享

with

使用一个简单地名字缓存一个复杂的变量,当你需要使用一个“昂贵的”方法(比如访问数据库)很多次的时候是非常有用的

例如:

{% with total=business.employees.count %}
    {{ total }} employee{{ total|pluralize }}
{% endwith %}

csrf_token

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

3 自定义过滤器和标签

步骤:
1 在settings中的INSTALLED_APPS,是否有当前应用

2 在应用中创建一个templatetags

3 在templatetags中创建py文件:mytag.py

4 在mytag.py中:
引入:
from django import template
from django.utils.safestring import mark_safe

register = template.Library() #register的名字是固定的,不可改变

5 定义过滤器和标签
@register.filter
def multi(x,y):
return x*y


@register.simple_tag
def multiTag(x,y,z):
return x*y*z

6 在引用模板中导入:{% load myTag %}

7 调用:
过滤器: {{var|filter_name:参数}} # 参数只能是一个

标签: {% simple_tag 参数1 参数2 ... %}

 

对比过滤器与自定义标签的使用:
过滤器函数的参数只能有两个,自定义标签无参数限制
过滤器可以与逻辑标签共同使用,比如if标签。自定义标签不可以。



















以上是关于Django web框架之模板的主要内容,如果未能解决你的问题,请参考以下文章

web框架之--Django基础入门

PythonWeb框架之Django初识

django之python网站开发基础

Django框架目录索引

Python之Web开发--Django框架

Django框架之模板层template的一些介绍和使用