django--T(模板)

{{ }}表示变量,在模板渲染的时候替换成值,

{% %}表示标签,进行逻辑相关的操作。

在双大括号/变量中的一般用  点 来获取对象的相关属性和方法  .操作只能调用不带参数的方法

 1 # 如下--view中的代码:
 2 
 3 def template_test(request):
 4     m = [11, 22, 33]      #在HTML中 {{m.0}} 取的是m中的第一个参数11
 5     d = {"name": "xiao"}    #在HTML中 {{d.name}} 取的是字典中key的值xiao /通过方法.values 获得所有的values值 /.items 获得键值对
 6 
 7     class Person(object):
 8         def __init__(self, name, age):
 9             self.name = name
10             self.age = age
11 
12         def dream(self):
13             return "{} is dream...".format(self.name)
14 
15     xiao1 = Person(name="xiao1", age=34)
16     xiao2 = Person(name="xiao2", age=9000)
17     xiao3 = Person(name="xiao3", age=18)
18 
19     person_list = [xiao1, xiao2, xiao3]      .0.name获取对象的name属性/.0.dream 获取对象的方法
20     return render(request, "template_test.html", {"m": m, "d": d, "person_list": person_list})

注:当模板系统遇到一个(.)时,会按照如下的顺序去查询:

  1. 在字典中查询
  2. 属性或者方法
  3. 数字索引

过滤器:  {{变量名|过滤器:参数}}  语法: {{ value|filter_name:参数 }}   # 参数最多只有一个

1内置过滤器:

  1.default  {{value|default:"nothing"}}  

    提供默认值,如果value值为空就显示nothing

    另:在setting->TEMPLATES->OPTIONS添加 string_if_invalid:'找不到'  会拥有一样的功能

  2.date 日期格式化  {{now|date:'Y-m-d H:i:s'}}

    另:在setting->USE_L10N=false/DATETIME_FORMAT='Y-m-d H:i:s'  具有同样的功能

  3.safe 不进行转义

    {{js|safe}}  django默认是转义的

2.自定义filter

  定义:

    1.在APP下创建一个叫templatetags的python包;  必须是包,必须是templatetags

    2.在包中创建一个py文件

    3.在py文件中写代码:

      from django import template

      register=template.Library()  register的名字不能改

    4.写函数并给定义的函数加装饰器

      @register.filter
      def add_dsb(value, arg):
          return "{}_{}".format(value, arg)

  在模板(HTML)中使用:

      1.导入定义的文件:  {% load my_filter %}    py文件名可变

      2.使用过滤器    {{ name|add_dsb:'very_dsb' }}   变量 函数名 参数

注意!!!在form表单中添加{% csrf_token %} 提交POST请求时可以通过django的验证

1.母版:就是一个普通的HTML文本,将多个页面公共部分的内容提取出来,在页面中定义多个block块

{% block content %}
{% endblock %}

2.继承:在子页面中,继承母版  {% extends  'base.html'  %}

  在子页面中通过定义母板中的block名来对应替换母板中相应的内容。

{% block content %}
  <p>世情薄</p>
  <p>人情恶</p>
  <p>雨送黄昏花易落</p>
{% endblock %}

3.组件:把多个页面公用的HTML代码放到一个HTML文件中

    在需要使用的地方导入语法即可  {% include  ‘nav.html’  %}

    

4.静态文件:在平时导入静态文件时,会用到相对路径或绝对路径,但会遇到这种情况:改setting中 STATIC_URL 的路径,

     这时一改就需要将所有相关的导入路径都要改一遍,下面的方法就可以避免这种情况,路径会一起改变.

   {% load static %}

    {% static  '静态文件相对路径' %}    ——》 获取到别名,跟后面的参数进行拼接

  如:<link rel="stylesheet" href="{% static 'plugins/bootstrap-3.3.7/css/bootstrap.css' %}">

    {% get_static_prefix %}  ——》 获取到别名

  如:<link rel="stylesheet" href="{% get_static_prefix %}plugins/bootstrap-3.3.7/css/bootstrap.css">

原文地址:https://www.cnblogs.com/leo-tail-x/p/10061229.html