django--T(模板)

news/2024/7/6 6:32:56

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

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

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

 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


http://www.niftyadmin.cn/n/4581884.html

相关文章

i5-1035g1和i5-10210u的区别 哪个好

i5-1035G1采用10nm工艺制造&#xff0c;4核8线程&#xff0c;隶属Ice Lake家族&#xff0c;基础频率1GHz&#xff0c;最大睿频3.6GHz&#xff0c;热设计功耗15W&#xff0c;集成UHD核显&#xff0c;支持DDR4-3200、LPDDR4-3733内存。 如何选择性价比最高的高端游戏本&#xff0…

纯CSS3垂直动画菜单

在线演示 本地下载

i5-10210U和i5-8265U的区别 哪个好

i5-10210u性能要强大一些。不过两者之间性能相差比较小&#xff0c;在选购笔记本的时候&#xff0c;还要考虑价格因素&#xff0c;太贵的话肯定不划算。 哪一款笔记本 值得购买?懂笔记本的人这样选! https://list.jd.com/list.html? 根据国外媒体评测&#xff0c;intel酷睿i…

i5 10300h怎么样

英特尔酷睿i5-10300H是一款用于笔记本电脑的快速处理器&#xff0c;具有基于Comet Lake-H系列&#xff08;第四代Skylake架构&#xff09;的四个内核。 处理器的频率在2.5到4.3 GHz之间&#xff08;最有可能在4个内核下达到4.2&#xff09;&#xff0c;并且借助超线程技术可以同…

《疯狂Java讲义》学习笔记(三)数据类型和运算符

2019独角兽企业重金招聘Python工程师标准>>> 1、注释 Java语言的注释一共有三种类型 单行注释&#xff1a;用双斜线 ”//” 表示多行注释&#xff1a;用 /*------------------*/ 表示文档注释&#xff1a;用 /**-----------------*/ 表示如果编写Java源代码时添加了…

GIthub开源项目实现翻页效果(FlipView)

Github项目地址&#xff1a;https://github.com/openaphid/android-flip 效果图一&#xff1a; 效果图二&#xff1a; 先看一下&#xff0c;使用是多么简单&#xff0c;首先有两个布局。 布局一&#xff1a; …

i510300h和i710750h的区别 哪个好

酷睿i7-10750H&#xff0c;显然是bai酷睿i7-9750H的继任者、未来高端游戏du本的标配&#xff0c;继续6核心zhi12线程&#xff0c;基准频率还是2.6GHz&#xff0c;但是最dao高睿频频率从4.6GHz大幅提升至5.0GHz。 i510300h和i710750h 哪个用来搭配笔记本更好用&#xff1f;看完你…

面向对象css oocss

1、概念oocss&#xff1a;将页面可重用元素抽象成一个类&#xff0c;用class加以描述&#xff0c;而对其他对应的HTML即可看成是此类的一个实例2、作用1、加强代码复用以便方便维护2、减小css体积3、提升渲染效率4、组件库思想、栅格布局可共用、减少选择器、方便拓展3、注意事…