context = {}
3.模板渲染,产生一个替换后的html内容
res_html = temp.render(context)
4.返回应答
return HttpResponse(res_html)
def index(request):
return render(request, ‘booktest/index.html’)
return my_render(request, ‘booktest/index.html’)
模板文件加载顺序
1)首先去配置的模板目录下面去找模板文件。
2)去INSTALLED_APPS下面的每个应用的templates去找模板文件,前提是应用中必须有templates文件夹。
index2页面未创建
def index2(request):
“”“模板文件的加载顺序”“”
return my_render(request, ‘booktest/index2.html’)
报错结果
模板语言
模板语言简称为DTL。(Django Template Language)
模板变量
模板变量名是由数字,字母,下划线和点组成的,不能以下划线开头。
使用模板变量:
{ {模板变量名}}
模板变量的解析顺序:
例如:{ { book.btitle }}
-
1)首先把book当成一个字典,把btitle当成键名,进行取值book[‘btitle’]
-
2)把book当成一个对象,把btitle当成属性,进行取值book.btitle
-
3)把book当成一个对象,把btitle当成对象的方法,进行取值book.btitle
例如:{ {book.0}}
-
1)首先把book当成一个字典,把0当成键名,进行取值book[0]
-
2)把book当成一个列表,把0当成下标,进行取值book[0]
如果解析失败,则产生内容时用空字符串填充模板变量。
使用模板变量时,.前面的可能是一个字典,可能是一个对象,还可能是一个列表。
使用模板变量示例
模板变量函数
def temp_var(request):
“”“模板变量”“”
my_dict = {“title”: “字典键值”}
my_list = [1, 2, 3]
book = models.BookInfo.objects.get(id=1)
定义模板上下文
context = {‘my_dict’: my_dict, ‘my_list’: my_list, ‘book’: book}
return render(request, ‘booktest/temp_var.html’, context)
模板变量html代码(booktest/temp_var.html)
使用字典属性:{
{ my_dict.title }}
使用列表元素:{
{ my_list.1 }}
使用对象属性:{ { book.btitle }}
模板标签
模板标签使用格式:
{% 代码段 %}
for循环:
{% for x in 列表 %}
列表不为空时执行
{% empty %}
列表为空时执行
{% endfor %}
可以通过{ { forloop.counter }}得到for循环遍历到了第几次。
if判断:
{% if 条件 %}
{% elif 条件 %}
{% else %}
{% endif %}
关系比较操作符:> < >= <= == !=
注意:进行比较操作时,比较操作符两边必须有空格。
逻辑运算:not and or
django内置标签与过滤器文档:内置标签与过滤器文档 或者 https://yiyibooks.cn/xx/django_182/ref/templates/builtins.html
模板标签使用示例
函数
def temp_tags(request