作为一个Web框架,Django需要一种动态生成HTML的便捷方法。最常用的方法依赖于模板。
模板包含所需的HTML输出的静态部分以及描述动态内容将被插入的某些特殊语法。
模版引擎的配置
web/web/settings.py TEMPLATES
# 默认情况下,只需要创建模版存放的目录 web/templates
# 在settings.py 的配置文件中 模版引擎配置项中 定义模版目录即可
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]模版引擎的使用
在需要解析模版的视图函数中,使用render函数就可以加载模版文件
def index(request):
# render有三个参数,第一个参数是请求对象,第二个参数是响应模版文件,第三个参数是字典,传递给模版的数据
# love = 'iloveyoutosimida'
return render(request,'index.html',{'lovestr':love})模版引擎的语法1.变量的使用
基本语法:
{{ var }}
当模版引擎遇到一个变量,将计算这个变量,然后将变量结果输出
变量名必须是由字母,数字,下划线和点组成
当模版引擎遇到点 . ,会按照以下顺序进行结果的解析
按照字典解析 var['bar']
按照对象的属性或方法进行解析。var.bar
按照数字索引进行解析 var[2]
如果变量不存在,也不会报错,模版会插入空字符串 ‘ ’
在模版中使用变量或方法时,不能使用小括号,中括号,大括号等。
调用方法时,不能传递参数
2.标签的使用
循环,流程控制,等其他功能的语法
语法:
{% tag %}for循环标签
{% for k,v in vardict.items %}
{{ k }} {{ v }}
{% endfor %}if流程控制标签
{% if vardict.age > 20 %}
年轻人
{% else %}
小青年
{% endif %}
Comment 注释标签
单行注释标签:{# {{ var }} #}
{% comment %}
{% if vardict.age > 20 %}
年轻人
{% else %}
小青年
{% endif %}
{% endcomment %}
CSRF标签
{% csrf_token %}
# 一般用在表单内,会自动的生成一个隐藏的表单项
url反向解析标签
{% url 'routename' args %}3.过滤器
语法:
# 可以对前面的变量进行计算处理在输出
{{ 变量|过滤器 }}
# 1. 简单的大小写转换
{{ varstr | upper }} {{ varstr | lower }}
# 2. join过滤器
{{ arr|join:"," }}
# 3.求长度
{{ arr|length }}
# 4.设置默认值
{{ info|default:"这个人很懒,什么都没有留下" }}
# 5.关闭自动转移 safe
{{ varhtml|safe }}
领取专属 10元无门槛券
私享最新 技术干货