django基础,django框架菜鸟教程

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: