Files
notes_estom/Python/Django/Django-template.md
yinkanglong_lab a5132d34cc python
2021-03-09 20:51:22 +08:00

118 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
template模板的具体使用
创建模板,目录结构如下:
\|-- HelloWorld\|-- manage.py \`-- templates \`-- hello.html
修改配置文件当中TEMPLATES的基础路径
...TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [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', ], }, },]...
使用模板如下(view.py)
使用render函数+数据+渲染内容实现结果输出
from django.shortcuts import renderdef hello(request): context = {}
context['hello'] = 'Hello World!' return render(request, 'hello.html', context)
Django templates模板标签
**if-elif-endif标签**
{% if condition %}
display 1
{% elif condition2 %}
display 2
{% else %}
display 3
{% endif %}
**for-endfor标签**
{% for athlete in athlete_list %}
\<li\>{{ athlete.name}}\</li\>
{% endfor %}
循环中的默认变量
{**%** **for** item **in** List **%**}
{{ item }}{**%** **if** **not** forloop.last **%**},{**%** endif **%**}
{**%** endfor **%**}
\<**ul**\>
{% for athlete in athlete_list %}
\<**li**\>{{ athlete.name }}\</**li**\>
{% empty %}
\<**li**\>抱歉,列表为空\</**li**\>
{% endfor %}
\</**ul**\>
| 变量 | 描述 |
|-------------------------|-------------------------------------------------------|
| **forloop.counter** | 索引从 1 开始算 |
| **forloop.counter0** | 索引从 0 开始算 |
| **forloop.revcounter** | 索引从最大长度到 1 |
| **forloop.revcounter0** | 索引从最大长度到 0 |
| **forloop.first** | 当遍历的元素为第一项时为真 |
| **forloop.last** | 当遍历的元素为最后一项时为真 |
| **forloop.parentloop** | 用在嵌套的 for 循环中, 获取上一层 for 循环的 forloop |
**ifequal/ifnotequal 标签**
{% ifequal user currentuser %}
\<h1\>Welcome!\</h1\>
{% endifequal %}
**注释标签**
{\# 这是一个注释 \#}
**过滤器标签**
lower是一个过滤管道允许被套接
{{ name\|lower }}
常见的过滤管道
{{...\|first\|upper\|lower\|truncatewords:"30"\|date:"F j ,Y"}}
**include标签**
{% include "nav.html" %}
Django模板的继承
模板通过继承实现代码的复用,下面是父文件
\<body\> \<h1\>Hello World!\</h1\> \<p\>菜鸟教程 Django 测试。\</p\> {% block
mainbody %} \<p\>original\</p\>{% endblock %}\</body\>
下面是子文件可以替换block部分
{% extends "base.html" %} {% block mainbody %}\<p\>继承了 base.html 文件\</p\>{%
endblock %}