Django基础模板层(75-76)

Posted wu-jia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django基础模板层(75-76)相关的知识,希望对你有一定的参考价值。

Django框架之模板层(d75)
一 模版语法之变量:
 ** locals() 会把*该*视图函数内的变量,传到模板
    ** return render(request, ‘index.html‘, locals())
 1 {{ 变量 }}:******重要******{#相当于print了该变量#}
  只写函数名:相当于函数名(),执行该函数,打印函数返回值
 2 深度查询---->统一都用句点符 .
  拓展:不能调有参数的方法
二 模版之过滤器
 1语法:{{第一个参数|过滤器名字:第二个参数}}
 2常用过滤器:(详细用法见源码)
  1 length  返回列表中元素的个数或字符串长度
  2 default 如果值不存在,则使用默认值代替
  3 slice 切片操作, 返回列表 # {{ ‘asdikfjhih‘ | slice:‘:5‘ }} 返回 ‘asdik’
  4 date   格式化日期    {{ ctim|date:‘Y-m-d‘ }}
  5 filesizeformat 增加数字的可读性,转换结果为13KB  {{ 1024 | filesizeformat }} 返回 1.0KB
  6 truncatechars 字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾
  7 truncatewords 将字符串转换为省略表达方式  {{ ‘This is a pen‘ | truncatewords:2 }}返回  This is ...
  8 safe 单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义
  9 add 给value加上一个数值  {{ user.age | add:”5” }} 
三 模版之标签 : {% 标签 %}
  1 for: forloop:对象(里面有好多东西:parentloop,last,first,counter....)忘记的话, 自己打印一下
   empty:  被循环的对象是空,才走它
   for循环可以嵌套,也可以用if
  2 if:
   {% if forloop.first %}
    <p>第一次的我 </p>
   {% elif forloop.last %}
    <p>最后的我 </p>
   {% else %}
    <p>{{ foo }}</p>吧
   {% endif %}
  3 with:重命名,应用在变量名过长
  ********都要有结束******{%endif%}  {%endfor%}  {%enwith%}
四 自定义标签和过滤器 
 1 自定义过滤器
  1 先app是不是已经在setting中注册
  2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块)
  3 在模块下创建一个py文件,名字随意:mytag.py
  4 第一步,导入template
     from django.template import Library
    第二步,定义一个叫register的变量=template.Library()
     register = Library()
  5 写一个函数,用@register.filter(name=‘yyy‘)装饰一下(可以指定别名)
   def str_add(str1, str2): #一定要有返回值
    # 业务逻辑很复杂
    return str1 + str2
  6 在模板里:(新定定义的标签,过滤器,都要重启程序)
   {% load mytag %}
   {{‘lqz‘|str_add:‘nb‘}}
  **过滤器,可以用在if判断
 2 自定义标签:
  1-4:前4步,根过滤器的定义完全一样
  5 只是装饰器不一样
   @register.simple_tag()
    def add_nb(value):
     return value+‘nb‘
  6 在模板里:(多个参数,以空格区分)
   {% load mytag %}
   {% add_nb ‘lqz‘%}
  **标签不能用在if判断
五 模版导入-->写了一个好看的组件,可以复用,
 1 写一个模板
 2 在模板中:{% include ‘模板的名字‘%}
六 模板的继承
 1 写一个母版,留一个可扩展的区域(盒子),可以留多个盒子(留的越多,可扩展性越高)
  {%block 名字%}
   可以写内容
  {%endblock%}
 2 在子模板中使用:
  {%block 名字%}
   子模板的内容
  {%endblock 名字%}
七 静态文件相关
 1 写死静态文件:<link rel="stylesheet" href="/static/css/mycss.css">
 2 使用 static标签函数:
  -{%load static%}
  #static返回值,会拼上传参的路径
  -{% static "传参"%}
 3 使用get_static_prefix 标签
  -{%load static%}
  #get_static_prefix返回值是:静态文件的地址,相当于/static/
  -{% get_static_prefix %}css/mycss.css



















































































以上是关于Django基础模板层(75-76)的主要内容,如果未能解决你的问题,请参考以下文章

Django基础之视图(views)层模板层

Django的MTV的模式三大层之一,模板基础

Django基础二

Django之模板层

django目录

Django的学习之路