Django-模板

2019-05-15  本文已影响0人  遇明不散

模板

什么是模板
模板的设置

settings.py 中有一个 TEMPLATES 变量

模板的加载方式
from django.template import loader
def xxViews(request):
    # 通过 loader 加载模板
    t = loader.get_template("模板名称")
    # 将模板渲染成字符串
    html = t.render()
    # 将字符串通过HttpResponse响应给客户端
    return HttpResponse(html)
def xxViews(request):
    return render(request,'模板的名称')

模板的语法

变量
# 使用 loader 加载模板
dic = {
    '变量名1':'值1',
    '变量名2':'值2',
}

t = loader.get_template('xxx.html')
html = t.render(locals() 或 dic)
return HttpResponse(html)

# 使用 render 加载并返回模板
dic = {
    '变量名1':'值1',
    '变量名2':'值2',
}
return render(request,'xx.html',dic)
标签
<!-- comment -->
{% comment "Optional note" %} <!-- Optional note 为注释名字,可选 -->
    <p>{{comment content}}</p>
{% endcomment %}

<!-- for -->
{% for 变量 in 列表|元组|字典 %}
{% endfor %}
<!--
循环中允许使用 forloop 内置变量来获取循环的信息
    forloop.counter : 当前循环遍历的次数
    forloop.first : 判断是否为第一次循环
    forloop.last : 判断是否为最后一次循环
-->

<!-- if -->
{% if 条件 %}
    满足条件时要执行的内容
{% endif %}
<!-- if ... else -->
{% if 条件 %}
    满足条件时要执行的内容
{% else %}
    不满足条件时要执行的内容
{% endif %}
<!--if ... elif ... else -->
{% if 条件1 %}
    满足条件1时要执行的内容
{% elif 条件2 %}
    或满足条件2时要执行的内容
{% elif 条件3 %}
    或满足条件3时要执行的内容
{% else %}
    或以上条件都不满足时要执行的内容
{% endif %}
过滤器
静态文件

在Django中,不被解释器所动态解析的文件就是静态文件

Django中静态文件的处理

settings.py 中设置有关静态文件的信息

访问静态文件

模板的继承

语法
在父模板中

必须要标识处哪些内容在子模板中允许被修改

# 标签
{% block 名称 %}
   # 允许被修改的内容
{% endblock %}
# block的作用:
# 在父模板中正常显示
# 在子模板中,如果不修改的话则按父模板的显示,要是修改的话则按照子模板的内容显示
在子模板中
# 指定继承自哪个父模板
{% extends '父模板名称' %}
# 增加 block 标签,改写属于自己的内容
{% block 名称 %}
  # 自己的内容
{% endblock %}
# 父模板的变量不会给继承到子模板

url反向解析

在模板上做反向解析
# 基本解析
{% url '别名' %}

# 带参的解析
{% url '别名' '参数1' '参数2' %}
在视图上做反向解析
# 基本解析
url = reverse('别名')  # url 就是通过别名解析出来的地址

# 带参的解析
url = reverse('别名',args=(参数1,参数2)) # url 就是通过别名解析出来的地址
上一篇 下一篇

猜你喜欢

热点阅读