{{ }}表示变量,在模板渲染的时候替换成值,
{% %}表示标签,进行逻辑相关的操作。
在双大括号/变量中的一般用 点 来获取对象的相关属性和方法 .操作只能调用不带参数的方法
1 # 如下--view中的代码: 2 3 def template_test(request): 4 m = [11, 22, 33] #在HTML中 {{m.0}} 取的是m中的第一个参数11 5 d = {"name": "xiao"} #在HTML中 {{d.name}} 取的是字典中key的值xiao /通过方法.values 获得所有的values值 /.items 获得键值对 6 7 class Person(object): 8 def __init__(self, name, age): 9 self.name = name 10 self.age = age 11 12 def dream(self): 13 return "{} is dream...".format(self.name) 14 15 xiao1 = Person(name="xiao1", age=34) 16 xiao2 = Person(name="xiao2", age=9000) 17 xiao3 = Person(name="xiao3", age=18) 18 19 person_list = [xiao1, xiao2, xiao3] .0.name获取对象的name属性/.0.dream 获取对象的方法 20 return render(request, "template_test.html", {"m": m, "d": d, "person_list": person_list})
注:当模板系统遇到一个(.)时,会按照如下的顺序去查询:
- 在字典中查询
- 属性或者方法
- 数字索引
过滤器: {{变量名|过滤器:参数}} 语法: {{ value|filter_name:参数 }} # 参数最多只有一个
1内置过滤器:
1.default {{value|default:"nothing"}}
提供默认值,如果value值为空就显示nothing
另:在setting->TEMPLATES->OPTIONS添加 string_if_invalid:'找不到' 会拥有一样的功能
2.date 日期格式化 {{now|date:'Y-m-d H:i:s'}}
另:在setting->USE_L10N=false/DATETIME_FORMAT='Y-m-d H:i:s' 具有同样的功能
3.safe 不进行转义
{{js|safe}} django默认是转义的
2.自定义filter
定义:
1.在APP下创建一个叫templatetags的python包; 必须是包,必须是templatetags
2.在包中创建一个py文件
3.在py文件中写代码:
from django import template
register=template.Library() register的名字不能改
4.写函数并给定义的函数加装饰器
@register.filter
def add_dsb(value, arg):
return "{}_{}".format(value, arg)
在模板(HTML)中使用:
1.导入定义的文件: {% load my_filter %} py文件名可变
2.使用过滤器 {{ name|add_dsb:'very_dsb' }} 变量 函数名 参数
注意!!!在form表单中添加{% csrf_token %} 提交POST请求时可以通过django的验证
就是一个普通的HTML文本,将多个页面公共部分的内容提取出来,在页面中定义多个block块
{% block content %}
{% endblock %}
2.继承:在子页面中,继承母版 {% extends 'base.html' %}
在子页面中通过定义母板中的block名来对应替换母板中相应的内容。
{% block content %}
<p>世情薄</p>
<p>人情恶</p>
<p>雨送黄昏花易落</p>
{% endblock %}
3.组件:把多个页面公用的HTML代码放到一个HTML文件中
在需要使用的地方导入语法即可 {% include ‘nav.html’ %}
4.静态文件:在平时导入静态文件时,会用到相对路径或绝对路径,但会遇到这种情况:改setting中 STATIC_URL 的路径,
这时一改就需要将所有相关的导入路径都要改一遍,下面的方法就可以避免这种情况,路径会一起改变.
{% load static %}
{% static '静态文件相对路径' %} ——》 获取到别名,跟后面的参数进行拼接
如:<link rel="stylesheet" href="{% static 'plugins/bootstrap-3.3.7/css/bootstrap.css' %}">
{% get_static_prefix %}