diff --git a/docs/djiango.html b/docs/djiango.html index 9c471937..669906ae 100644 --- a/docs/djiango.html +++ b/docs/djiango.html @@ -5,7 +5,7 @@ Django 备忘清单 & djiango cheatsheet & Quick Reference - + @@ -37,10 +37,10 @@

Django 备忘清单

-

Django 是 Python 的一款 Web 框架

+

Django 是 Python 的一款 Web 框架,本备忘单旨在快速理解 Django 所涉及的主要概念,提供了最常用的 API 示例参考

入门

准备环境

$ python --version
@@ -252,6 +252,526 @@
   "lastname" varchar(255) NOT NULL
 );
 
+

Django 模板

+

模板变量

+ +
<!-- template.html -->
+<h1>你好 {{ firstname }},你好吗?</h1>
+
+

在视图 (views.py) 中创建变量,上面示例中的变量 firstname 通过视图发送到模板:

+
from django.http import HttpResponse
+from django.template import loader
+
+def testing(request):
+  template = loader.get_template('template.html')
+  context = {
+    'firstname': '狂徒张三',
+  }
+  return HttpResponse(template.render(context, request))
+
+

模板中创建变量

+
{% with firstname="Tobias" %}
+<h1>你好 {{ firstname }},你好吗?</h1>
+
+

数组循环

+
<ul>
+  {% for x in mymembers %}
+    <li>{{ x.firstname }}</li>
+  {% endfor %}
+</ul>
+
+

模板标签参考

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
标签描述
autoescape指定自动转义模式是打开还是关闭
block指定块部分
comment指定注释部分
csrf_token保护表单免受跨站点请求伪造
cycle指定要在循环的每个循环中使用的内容
debug指定调试信息
extends指定父模板
filter在返回之前过滤内容
firstof返回第一个非空变量
for指定一个 for 循环
if指定一个 if 语句
ifchanged仅当自上次迭代以来值已更改时才输出块
(用于 for 循环)
include指定包含的内容/模板
load从另一个库加载模板标签
lorem输出随机文本
now输出当前日期/时间
regroup按组对对象进行排序
resetcycle循环使用,重置循环
spaceless删除 HTML 标签之间的空格
templatetag输出指定的模板标签
url返回 URL 的绝对 URL 部分
verbatim指定不应由模板引擎呈现的内容
widthratio给定值和最大值之间的比率计算宽度值
with指定要在块中使用的变量
+ +

If 语句

+
{% if greeting == 1 %}
+  <h1>Hello</h1>
+{% elif greeting == 2 %}
+  <h1>Welcome</h1>
+{% else %}
+  <h1>Goodbye</h1>
+{% endif %} 
+
+

For 循环

+ +
{% for x in cars %}
+  <h1>{{ x.brand }}</h1>
+  <p>{{ x.model }}</p>
+  <p>{{ x.year }}</p>
+{% endfor %} 
+
+

数据 cars 空的展示内容:

+
<ul>
+  {% for x in cars %}
+    <h1>{{ x.brand }}</h1>
+    <p>{{ x.model }}</p>
+    <p>{{ x.year }}</p>
+  {% empty %}
+    <li>No members</li>
+  {% endfor %}
+</ul> 
+
+

循环变量

+ +
    +
  • forloop.counter 当前循环,从 1 开始
  • +
  • forloop.counter0 当前循环,从 0 开始
  • +
  • forloop.first 循环是否在其第一次循环中
  • +
  • forloop.last 循环是否在其最后一次循环中
  • +
  • forloop.parentloop
  • +
  • forloop.revcounter 如果从末尾开始并向后计数,则以 1 结束
  • +
  • forloop.revcounter0 如果从末尾开始并向后计数,则以 0 结束
  • +
+

过滤值

+
<h1>你好 {{ firstname|upper }},你好吗?</h1>
+
+

返回带有大写字母的变量名

+

注释

+ +
<h1>欢迎大家{# 较小的注释 #}</h1>
+{% comment %}
+  <h1>欢迎女士们先生们</h1>
+{% endcomment %}
+
+

注释描述

+
<h1>欢迎大家{# 较小的注释 #}</h1>
+{% comment "这是最初的欢迎信息" %}
+    <h1>欢迎女士们先生们</h1>
+{% endcomment %}
+
+

注释允许您拥有应该被忽略的代码部分

+

双过滤值

+
<h1>你好 {{ firstname|first|upper }},你好吗?</h1>
+
+

返回变量 firstname 的第一个字符,小写

+

过滤器标签

+
{% filter upper %}
+  <h1>Hello everyone, how are you?</h1>
+{% endfilter %}
+
+

返回内容大写

+

cycle

+ +

如果你想为每次循环使用新的背景颜色,你可以使用 cycle 标签来做到这一点

+
<ul>
+  {% for x in members %}
+    <li style='background-color:{% cycle 'lightblue' 'pink' 'yellow' 'coral' 'grey' %}'>
+      {{ x.firstname }}
+    </li>
+  {% endfor %}
+</ul> 
+
+

将参数值保存在变量中,以便以后使用:

+
<ul>
+  {% for x in members %}
+    {% cycle 'lightblue' 'pink' 'yellow' 'coral' 'grey' as bgcolor silent %}
+    <li style='background-color:{{ bgcolor }}'>
+      {{ x.firstname }}
+    </li>
+  {% endfor %}
+</ul> 
+
+

你注意到 silent 关键字了吗? 确保添加这个,否则参数值将在输出中显示两次

+
<ul>
+  {% for x in members %}
+    {% cycle 'lightblue' 'pink' 'yellow' 'coral' 'grey' as bgcolor silent %}
+    {% if forloop.counter == 3 %}
+      {% resetcycle %}
+    {% endif %}
+    <li style='background-color:{{ bgcolor }}'>
+      {{ x.firstname }}
+    </li>
+  {% endfor %}
+</ul> 
+
+

您可以使用 {% resetcycle %} 标签强制循环重新开始

+

每一行添加行号

+
{% filter upper|linenumbers %}Hello!
+my name is
+Emil.
+What is your name?{% endfilter %}
+
+

返回内容大写并在每一行添加行号

+

导入模板

+

footer.html:

+
<p>您已到达本页底部,感谢您抽出宝贵时间</p>
+
+

template.html:

+
<h1>Hello</h1>
+<p>此页面包含模板中的页脚</p>
+{% include 'footer.html' %} 
+
+

导入模板传入变量

+

mymenu.html:

+
<div>HOME | {{ me }} | ABOUT | FORUM | {{ sponsor }}</div>
+
+ +

template.html:

+
{% include mymenu.html with me="张三" sponsor="Reference" %}
+
+<h1>Welcome</h1>
+
+<p>This is my webpage</p>
+
+ +

过滤器参考

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeywordDescription
add添加指定的值
addslashes在任何引号字符之前添加一个斜杠,以转义字符串
capfirst返回大写的第一个字母
center使值在指定宽度的中间居中
cut删除任何指定的字符或短语
date以指定格式返回日期
default如果值为 False,则返回指定值
default_if_none如果值为 None,则返回指定的值
dictsort按给定值对字典进行排序
dictsortreversed按给定值对字典进行反向排序
divisibleby如果该值可以除以指定的数字,则返回 True,否则返回 False
escape从字符串中转义 HTML 代码
escapejs从字符串中转义 JavaScript 代码
filesizeformat将数字返回为文件大小格式
first返回对象的第一项(对于字符串,返回第一个字符)
floatformat将浮点数四舍五入到指定的小数位数,默认为一位小数
force_escape从字符串中转义 HTML 代码
get_digit返回数字的特定数字
iriencodeIRI 转换为 URL 友好字符串
join将列表中的项目返回为字符串
json_script将一个对象返回为由 <script></script> 标签包围的 JSON 对象
last返回对象的最后一项(对于字符串,返回最后一个字符)
length返回对象中的项目数,或字符串中的字符数
length_is如果长度与指定的数字相同,则返回 True
linebreaks返回带有 <br> 而不是换行符和 <p> 而不是多个换行符的文本
linebreaksbr返回带有 <br> 的文本,而不是换行符
linenumbers返回每行带有行号的文本
ljust根据指定的宽度左对齐值
lower以小写字母返回文本
make_list将值转换为列表对象
phone2numeric将带字母的电话号码转换为数字电话号码
pluralize如果指定的数值不是 1,则在值的末尾添加一个 s
pprint
random返回对象的随机项
rjust根据指定的宽度右对齐值
safe标记此文本是安全的,不应进行 HTML 转义
safeseq将对象的每个项目标记为安全且项目不应进行 HTML 转义
slice返回文本或对象的指定切片
slugify将文本转换为一个长字母数字小写单词
stringformat将值转换为指定格式
striptags从文本中删除 HTML 标记
time以指定格式返回时间
timesince返回两个日期时间之间的差
timeuntil返回两个日期时间之间的差
title文本中每个单词的第一个字符大写,所有其他字符都转换为小写
truncatechars将字符串缩短为指定数量的字符
truncatechars_html将字符串缩短为指定数量的字符,而不考虑任何 HTML 标记的长度
truncatewords将字符串缩短为指定数量的单词
truncatewords_html将字符串缩短为指定数量的单词,而不考虑任何 HTML 标记
unordered_list将对象的项目返回为无序列的 HTML 列表
upper以大写字母返回文本
urlencodeURL 对字符串进行编码
urlize将字符串中的任何 URL 作为 HTML 链接返回
urlizetrunc将字符串中的任何 URL 作为 HTML 链接返回,但会将链接缩短为指定的字符数
wordcount返回文本中的单词数
wordwrap以指定的字符数换行
yesno将布尔值转换为指定值
i18n
l10n
tz

另见