Django框架模版引擎详解

作为一个Web框架,Django需要一种动态生成HTML的便捷方法。最常用的方法依赖于模板。

模板包含所需的HTML输出的静态部分以及描述动态内容将被插入的某些特殊语法。

模版引擎的配置

web/web/settings.py TEMPLATES

  1. # 默认情况下,只需要创建模版存放的目录 web/templates
  2. # 在settings.py 的配置文件中 模版引擎配置项中 定义模版目录即可
  3. TEMPLATES = [
  4. {
  5. 'BACKEND': 'django.template.backends.django.DjangoTemplates',
  6. 'DIRS': [os.path.join(BASE_DIR,'templates')],
  7. 'APP_DIRS': True,
  8. 'OPTIONS': {
  9. 'context_processors': [
  10. 'django.template.context_processors.debug',
  11. 'django.template.context_processors.request',
  12. 'django.contrib.auth.context_processors.auth',
  13. 'django.contrib.messages.context_processors.messages',
  14. ],
  15. },
  16. },
  17. ]

模版引擎的使用

在需要解析模版的视图函数中,使用render函数就可以加载模版文件

  1. def index(request):
  2. # render有三个参数,第一个参数是请求对象,第二个参数是响应模版文件,第三个参数是字典,传递给模版的数据
  3. # love = 'iloveyoutosimida'
  4. return render(request,'index.html',{'lovestr':love})

模版引擎的语法

1.变量的使用

基本语法:

  1. {{ var }}
  • 当模版引擎遇到一个变量,将计算这个变量,然后将变量结果输出
  • 变量名必须是由字母,数字,下划线和点组成
  • 当模版引擎遇到点 . ,会按照以下顺序进行结果的解析

    • 按照字典解析 var[‘bar’]
    • 按照对象的属性或方法进行解析。var.bar
    • 按照数字索引进行解析 var[2]
  • 如果变量不存在,也不会报错,模版会插入空字符串 ‘ ’
  • 在模版中使用变量或方法时,不能使用小括号,中括号,大括号等。
  • 调用方法时,不能传递参数

2.标签的使用

循环,流程控制,等其他功能的语法

语法:

  1. {% tag %}

for循环标签
  1. <!-- 模版中 for循环的使用 -->
  2. {% for k,v in vardict.items %}
  3. <li>{{ k }} <==> {{ v }}</li>
  4. {% endfor %}

if流程控制标签
  1. <!-- if 流程控制语法 -->
  2. <li>
  3. {% if vardict.age > 20 %}
  4. 年轻人
  5. {% else %}
  6. 小青年
  7. {% endif %}
  8. </li>

Comment 注释标签

  1. <!-- 单行注释 -->
  2. <li>
  3. 单行注释标签:{# {{ var }} #}
  4. </li>
  5. <!-- 多行注释 -->
  6. <li>
  7. {% comment %}
  8. {% if vardict.age > 20 %}
  9. 年轻人
  10. {% else %}
  11. 小青年
  12. {% endif %}
  13. {% endcomment %}
  14. </li>

CSRF标签
  1. {% csrf_token %}
  2. # 一般用在表单内,会自动的生成一个隐藏的表单项
  3. <input type="hidden" name="csrfmiddlewaretoken" value="asdgyagdua723ajhsbc">

url反向解析标签
  1. {% url 'routename' args %}

3.过滤器

语法:

  1. # 可以对前面的变量进行计算处理在输出
  2. {{ 变量|过滤器 }}
  3. # 1. 简单的大小写转换
  4. {{ varstr | upper }} {{ varstr | lower }}
  5. # 2. join过滤器
  6. {{ arr|join:"," }}
  7. # 3.求长度
  8. {{ arr|length }}
  9. # 4.设置默认值
  10. {{ info|default:"这个人很懒,什么都没有留下" }}
  11. # 5.关闭自动转移 safe
  12. {{ varhtml|safe }}