本文由 Luzhuo 编写,转发请保留该信息.
原文: http://blog.csdn.net/Rozol/article/details/79526459
以下代码以Python3.6.1为例
Less is more!
Python 3.6.1
Django 2.0.2
项目名: Django_templates 应用名: booktest
templates
目录创建位置 setting.py
中修改'DIRS': [os.path.join(BASE_DIR, "booktest.templates"),]
使用模板:
def index(request):
# 加载: 找到模板, 编译存于内存中
tem = loader.get_template('index.html')
context = {}
# 渲染: 将context数据插到模板中
return HttpResponse(tem.render(context, request))
# render 简写
# return render(request, 'index.html')
变量
{{ variable }}
标签
<h2>for标签h2>
{% for book in books %}
{#-循环逻辑-#}
{{ forloop.counter }} {#-第几次循环-#}
{{ book.name }}<hr>
{% empty %}
{#-列表为空或不存在, 执行此处-#}
此列表为空
{% endfor %} {#-循环结束-#}
<h2>if标签h2>
{% for book in books %}
{%if book.name == '88888' %}
{#-判断逻辑1-#}
<text style="color:red">{{ book.name }}text>
{% elif book.name == '红豆生南国' %}
{#-判断逻辑2-#}
<text style="color:blue">{{ book.name }}text>
{% else %}
{#-判断逻辑3-#}
name未知
{% endif %} {#-判断结束-#}
{% endfor %}
<h2>include:加载模板h2>
{# 语法: include "html页" with 变量名=值 #}
{% include "variable.html" with book=books|first %}
<h2>url:反向解析h2>
{% comment %}
语法: url 'namespace:name'
1. 在应用urls.py下配置 app_name = 'booktest'
2. 在项目urls.py的path下配置 namespace. 例如:path('booktest/', include('booktest.urls', namespace='booktest'))
3. 在应用urls.py的path下配置 name. 例如: path('', views.index, name='index'),
{% endcomment %}
<a href="{% url 'booktest:urltest' 'par1' 'par2' %}">反向解析a>
过滤器
使用示范:
结合运算符:
{% if list|length > 1 %}
{{ list|length }}
{% endif %}
<br>
串联调用:
{{ string|lower|upper }}
<br>
传递参数:
{{ string|join:'-' }}
<br>
默认值:
{{ value|default:'默认值' }}
注释
单行注释:
{# 单行注释 #}
多行注释:
{% comment %}
多
行
注
释
{% endcomment %}
extentds标签:
使用案例:
# --- 父模板页 ---
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<h1>页头 {{ name }}h1>
<hr>
父模板:
{# 在此预留位置, 用于子模板填充 #}
{% block content %}
<h1>abch1>
{% endblock content %}
<hr>
<h1>页尾h1>
body>
html>
# --- 子模板页 ---
{% extends "base.html" %}
子模板页面:
这里写的文字无效
将此块内容填充到父模板中 (注blockname相同)
{% block content %}
<h1>123h1>
{% endblock content %}
< (<) / > (>) / ' (') / " (") / & (&)
默认转义 (默认可执行代码转义成普通代码)
return render(request, 'escape.html', {'h1': 'hello word
'})
hello word
转义过滤器(一般不写): |escape
{{ h1|safe }}
关闭转义
不转义标签(代码块):
{% autoescape off%} … {% endautoescape %}
{% autoescape off %}
{{ h1 }}
{% endautoescape %}
跨站请求伪造保护
使用:
<form method="post" action="basetest">
{% csrf_token %}
<input name="name"><br>
<input type="submit" value="提交"/>
form>
该代码