Django模板语言
2017-10-16 16:24:51 0 举报
AI智能生成
django-template language学习
作者其他创作
大纲/内容
注意事项
模板HTML格式遵从模板语言然后使用HTML规则
Django模板语言
基础内容
变量
{{variable}} 不可使用空格和标点符号。“.”用于访问变量属性,有查询顺序:字典>属性/方法>数字索引
优先引用上下文的含义,然后引用指向的属性值
过滤器
{{变量名|过滤器名|...|过滤器名:参数...}} 过滤器可被串联(连续应用),可带参数进行过滤限制
除length之外,返回的都是字符串(谨慎用于数学比较)
内置过滤器参考手册
自定义模板标签和过滤器
自定义
admin接口提供地模板标记和可用过滤器的一个完整参考
admin
标签{%tag%}
输出创建文本,控制逻辑,加载外部信息供变量使用...
{% if %}{% endif %},{% for %}{% endfor %},{% block %}{% endblock %},
夹杂html语言,变量过滤器获取的值直接可结合至html中显示
内置标签参考手册,自定义标签&过滤器组
标签参考
csrf_token:跨站请求伪造保护
利用登陆过的认证信息完成某项操作
django.middleware.csrf.CsrfViewMiddleware,位于所有需处理的视图中间件之前
include:加载内容模板嵌入到当前HTML
load:加载模板标签集page 同python import
load packageA packageB.otherCon
load A B from packageAll
cycle:回传可迭代参数的元素
适合循环,每次返回不同参数
cycle中的变量会被转义
{% cycle a b as rowtext %}连续引用当前循环值 可使用as。
空格分割,引号为可迭代字符串,无引号为模板变量。
firstof:等价于if/elif/endif标签
{% firstof var1 var2 var3 \"默认字符串输出防所有变量都为False而不输出任何内容\"%}
for:reversed 可反向循环
{% for obj in list reversed %}
{% empty %} 插在for标签中处理循环内容为空的情况。
if
多次比较使用:if a>b and b>c
if中可使用过滤器: if getLength|length >= 100
操作符优先级:or<and<not<in<\
ifxxxxxx:ifxxxxx/endifxxxx
ifchanged:检查一个值是否在上一次的迭代中变化
ifequal:给定的两个参数相等则显示标签中内容。即 if a == b:xxxxx。ifnotequal同理
{%now \"jS \\o\\f F\"%} 时间缩写格式:
regroup:以某属性重组列表
注释
{#单行注释内容#}
{% comment \"注释原因,选填\" %}多行注释内容{% endcomment %}
自定义库和模板继承 只在当前模板中有效
{% load 自定义库1 自定义库2 %}
模板继承
{% extends \"xxx.html\" %},必须是模板的第一个标签,base模板block标签越多越好
{{ block.super }}在父block中新增内容而非完全覆盖
自动HTML转义
不应盲目信任用户提交的数据-- 跨站脚本(XSS)攻击
对不信任的值使用 escape过滤器/利用Django的自动转义
<-<;>->;'-';\"-";&-&。5处转义为Django默认转义行为
针对打算渲染成原始HTML的数据/DB存入HTML并嵌入模板
safe过滤器:{{ your data|safe }}
标签:{% autoescape off%}{% endautoescape %}。autoescape on 为打开自动转义状态
针对保留HTML格式的输入内容:autoescape off
在父模板中作用于子模板和include标签包含的模板
访问方法调用
遍历模型的外键对象集合{% for userobj in project.user_set.all%}
访问已定义在模型上的方法
流程
视图处理完毕数据集-->模板显示数据相关(for循环显示列表),利用queryset显示总和,总数...
收藏
0 条评论
回复 删除
下一页