django基础,django框架菜鸟教程
公文
普通语法只需要记住两个特殊符号:
{{}}和{%%}
使用{{}}表示变量,使用{%%}表示逻辑。
变量{ {变量名}}
变量名由字母数字字符和下划线组成。
圆点(。)在模板语言中有特殊的含义,用来获取对象对应的属性值。
几个例子:
视图中的代码:
定义模板_测试(请求):
l=[11,22,33]
d={name: alex}
类别人员(对象):
def __init__(自己,姓名,年龄):
self.name=name
年龄=年龄
定义梦想(自我):
return { is dream . 。格式(自我名称)
亚历克斯=人(姓名=亚历克斯,年龄=34岁)
Egon=Person(name=Egon ,age=9000)
伊娃_J=人(姓名=伊娃_J ,年龄=18岁)
person_list=[Alex,Egon,Eva_J]
返回render(request, template_test.html ,{l: l, d: d, person_list: person_list})
模板中支持的书写:
{#取L #}中的第一个参数
{{ l.0 }}
{#取字典中键的值#}
{{ d.name }}
{#获取对象的名称属性#}
{{ person_list.0.name }}
{#.操作只能调用不带参数的方法#}。
{{ person_list.0.dream }}
过滤器语法:{{值过滤器名称:参数}}
系统默认值
{{ valuedefault: nothing}}如果未传递值,则不显示任何内容。
长度
{{ valuelength }}
“”周围没有空格没有空格没有空格
返回值的长度,比如value=[a , b , c , d],会显示4。
文件大小格式
将该值格式化为“人类可读”的文件大小(例如,“13 KB”、“4.1 MB”、“102字节”等)。).例如:
{{ valuefilesizeformat }}如果值为123456789,则输出将为117.7 MB。
薄片
切片
{ { value slice: 2:-1 } }日期
格式化
{ { value date: Y-m-d H:I:s } }安全
由于显而易见的原因,在Django的模板中,HTML标记和JS等语法标记将被自动转义。这是为了安全。但是有时我们可能不希望这些HTML元素被转义。比如我们做一个内容管理系统,后台添加的文章都是修饰的。这些修饰可以通过用类似于FCKeditor的HTML修饰符编辑文本来实现。如果自动转义,将显示保护HTML标签的源文件。有两种方法可以关闭Django中HTML的自动转义。如果是单独的变量,我们可以告诉Django这段代码是安全的,不必通过过滤器“safe”进行转义。
例如:
Value= a href=# 单击我/a
{{ valuesafe}}truncatechars如果字符串超过指定的字符数,它将被截断。的截断字符串将以可翻译的省略号序列(“.”)结束).
参数:截断字符的数量
{{ valuetruncatechars:9}}自定义过滤器自定义过滤器只是一个带有一个或两个参数的Python函数:
变量(input)的值(不一定是字符串参数的值)可以有默认值,也可以完全省略。比如在filter {{var foo: "bar"}}中,filter foo会传递变量var和参数“bar”。
用户定义的过滤器代码文件放置位置:
app01/
__init__。巴拉圭
models.py
Templatetags/#在app01下新建一个包包。
__init__。巴拉圭
App01_filter.py #构建一个文件来存储自定义过滤器
views.py
编写自定义过滤器
从django导入模板
注册=模板。库()
@register.filter(name=cut )
定义切割(值,参数):
返回值. replace(arg,)
@register.filter(name=addSB )
def add_sb(值):
返回“{ SB }”。格式(值)
使用自定义过滤器
{#首先导入我们的自定义过滤器文件#}
{% load app01_filters %}
{#使用我们的自定义过滤器#}
{{ somevariablecut:0 }}
{{ d.nameaddSB }}
Tagsfor
保险商实验所
用户列表%}中用户的{%
li {{ user.name }} /li
{% endfor %}
/ul for循环的一些可用参数:
可变的
描述
forloop .柜台
当前循环的索引值(从1开始)
forloop.counter0
当前循环的索引值(从0开始)
forloop.revcounter
当前循环的反向索引值(从1开始)
forloop.revcounter0
当前循环的反向索引值(从0开始)
forloop.first
当前循环是否是第一个循环(布尔值)
forloop.last
当前循环是不是最后一次循环(布尔值)
forloop.parentloop
本层循环的外层循环
为.空的
保险商实验所
用户列表%}中用户的{%
li {{ user.name }} /li
{% empty %}
里空空如也/李
{% endfor %}
/ul
如果,埃利夫和否则
{% if user_list %}
用户人数:{{用户列表长度}}
{% elif黑名单%}
黑名单数:{{黑名单长度}}
{% else %}
没有用户
{% endif %}
当然也可以只有如果和其他
{% if user_listlength 5 %}
七座豪华运动型多功能车
{% else %}
黄包车
{% endif %}if语句支持and、or 、==、or!=、=、=、in、not in、is、is not判断。
随着
定义一个中间变量
{ % total=business。员工。计数% }
{{总计}}员工{ {总计复数}}
{% endwith %}csrf_token这个标签用于跨站请求伪造保护。
在页面的形式表单里面写上{% csrf_token %}
注释{# .#}注意事项1.姜戈的模板语言不支持连续判断,即不支持以下写法:
{% if a b c %}
.
{% endif %}
2.姜戈的模板语言中属性的优先级大于方法
定义xx(请求):
d={a: 1, b: 2, c: 3, items: 100}
return render(请求, xx.html ,{ 数据:d})如上,我们在使用提出方法渲染一个页面的时候,传的字典d有一个键是项目并且还有默认的d。项目()方法,此时在模板语言中:
{{ data.items }}默认会取d的项目键的值。
母板
!声明文档类型
html lang=en
头
meta charset=UTF-8
meta http-equiv= x-ua-compatible content= IE=edge
meta name= viewport content= width=device-width,initial-scale=1
标题标题/标题
{% block page-css %}
{% endblock %}
/头
身体
氕这是母板的标题/h1
{% block page-main %}
{% endblock %}
氕母板底部内容/h1
{% block page-js %}
{% endblock %}
/body
/html
注意:我们通常会在母板中定义页面专用的半铸钢钢性铸铁(铸造半钢)块和射流研究…块,方便子页面替换。
继承母板在子页面中在页面最上方使用下面的语法来继承母板。
{% extends layouts.html %}块(区块)通过在母板中使用{% block xxx %}来定义块。
在子页面中通过定义母板中的街区名来对应替换母板中相应的内容。
{% block page-main %}
p世情薄/p
p人情恶/p
p雨送黄昏花易落/p
{% endblock %}组件可以将常用的页面内容如导航条,页尾信息等组件保存在单独的文件中,然后在需要使用的地方按如下语法导入即可。
{% include navbar.html %}静态文件相关{% load static %}
img src= { % static images/Hi。jpg“% }”alt=嗨!/引用射流研究…文件时使用:
{% load static %}
脚本src= { % static mytest。js“% }”/脚本某个文件多处被用到可以存为一个变量
{% load static %}
{ % static images/hi。jpg 作为我的照片% }
img src={{我的照片}} /img使用get _ static _ prefix { % load static % }
img src= { % get _ static _ prefix % } images/Hi。jpg alt=嗨!/或者
{% load static %}
{ % get _ STATIC _ PREFIX as STATIC _ PREFIX % }
img src= { { STATIC _ PREFIX } } images/Hi。jpg alt=嗨!/
img src= { { STATIC _ PREFIX } } images/hi2。jpg alt=你好!/自定义标签和自定义过滤器类似,只不过接收更灵活的参数。
定义注册简单标签
@注册。简单标记(name= plus )
def plus(a、b、c):
返回"{} {} {}"。格式(甲、乙、丙)使用自定义简单标签
{% load app01_demo %}
{#简单标签#}
{ % plus 1 2 abc % }包含标记多用于返回超文本标记语言代码片段
示例:
templatetags/my_inclusion.py
从框架导入模板
注册=模板。库()
@注册。inclusion _ tag(结果。html’)
定义显示结果(n):
n=1 if n 1 else int(n)
数据=[第{}项。范围(1,^北部1)中我的格式]
返回{data: data}
模板/片段/结果。超文本标记语言
保险商实验所
{% for choice in data %}
李{ { choice } }/李
{% endfor %}
/ul模板/索引. html
!声明文档类型
html lang=en
头
meta charset=UTF-8
meta http-equiv= x-ua-compatible content= IE=edge
meta name= viewport content= width=device-width,initial-scale=1
标题包含_标签测试/标题
/头
身体
{% load inclusion_tag_test %}
{% show_results 10 %}
/body
/html
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。