zoukankan      html  css  js  c++  java
  • Django-模板语法+反向解析url

    1. 模板变量

    变量名必须由字母、数字、下划线(不能以下划线开头)和点组成,语法如下:

    {{ 变量 }}
    

    模板变量可以使python的内建类型,也可以是对象。

    def index(request):
        context = {
            'name': 'django',
            'my_list': ['python', 'java', 'php', 'c/c++'],
            'my_dict': {
                'name': 'python',
                'age': 20,
                'gender': '男',
            }
        }
        return render(request, 'index.html', context)
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>{{ name }}</h1>
        <h1>{{ my_list }}</h1>  
        <h1>{{ my_list.0 }}</h1>   <!-- 注意列表的取值方法 -->
        <h1>{{ my_dict }}</h1>
        <h1>{{ my_dict.name }}</h1>  <!-- 注意字典的取值方法 -->
    </body>
    </html>
    

    2. 模板语句

    1)for循环:

    {% for item in 列表 %}
        {{forloop.counter}}  <1-- 表示当前是第几次循环,从1开始 -->
        {{forloop.counter0}}  <!-- 表示当前是第几次循环,从0开始 -->
    {% empty %} 
        列表为空或不存在时执行此逻辑
    {% endfor %}
    

    2)if条件:

    {% if ... %}
        逻辑1
    {% elif ... %}
        逻辑2
    {% else %}
        逻辑3
    {% endif %}
    

    比较运算符如下:

    ==
    !=
    <
    >
    <=
    >=
    

    布尔运算符如下:

    and
    or
    not
    

    注意:运算符左右两侧必须有空格。

    {% if a == 1 %}  # 正确
    {% if a==1 %}  # 错误

    with

    使用一个简单地名字缓存一个复杂的变量,当你需要使用一个“昂贵的”方法(比如访问数据库)很多次的时候是非常有用的

    例如:

    {% with total=business.employees.count %}
        {{ total }} employee{{ total|pluralize }}
    {% endwith %}
     

    3. 过滤器

    语法如下:

    • 使用管道符号|来应用过滤器,用于进行计算、转换操作,可以使用在变量、标签中。
    • 如果过滤器需要参数,则使用冒号:传递参数。

      变量|过滤器:参数
      

    列举几个如下:

    • safe,禁用html转义(显示html标签样式,而不是字符串)
    • length,长度,返回字符串包含字符的个数,或列表、元组、字典的元素个数。
    • default,默认值,如果变量不存在时则返回默认值。

      data|default:'默认值'
      
    • date,日期,用于对日期类型的值进行字符串格式化,常用的格式化字符如下:

      • Y表示年,格式为4位,y表示两位的年。
      • m表示月,格式为01,02,12等。
      • d表示日, 格式为01,02等。
      • j表示日,格式为1,2等。
      • H表示时,24进制,h表示12进制的时。
      • i表示分,为0-59。
      • s表示秒,为0-59。
      value|date:"Y年m月j日  H时i分s秒"
    • Django模板--->http://python.usyiyi.cn/translate/django_182/ref/templates/builtins.html#ref-templates-builtins-tags

    4. 注释

    1)单行注释语法如下:

    {#...#}
    

    2)多行注释使用comment标签,语法如下:

    {% comment %}
    ...
    {% endcomment %}
    

    5. 模板继承

    • 模板继承和类的继承含义是一样的
    • 可以使用模板继承来复用父模板,提高代码的复用性,减轻开发人员的工作量。
    • 可以通过定义 block ,实现子模板对父模块内容的重写

    父模板

    如果发现在多个模板中某些内容相同,那就可以使用block标签把这段内容定义到父模板中。

    {% block 块名称 %}
        预留区域,可以编写默认内容,也可以没有默认内容
    {% endblock %}

    子模板

    1. 使用extends标签继承父模板,写在子模板文件的第一行。

       {% extends "父模板路径" %}
      
    2. 对有需要的block进行重写:

      • 不用重写父模版中的所有block,如果子模版没有重写,则使用父模版定义的默认值。
      • 可以使用 block.super 来包含父模板的块中定义的内容,如下

          {% block 名称 %}
              子模板的内容
              {{ block.super }}    显示父模板中block的内容
          {% endblock %}
  • 相关阅读:
    各地电信运营商插广告赚钱,北京联通也不甘落后
    也谈Server Limit DOS的解决方案
    Still Believe
    无奈小虫何
    好朋有也有类别
    无为而治
    青鸟随想
    落寞时分
    网站开发学习路线和资料
    C++实例 添加快捷键表
  • 原文地址:https://www.cnblogs.com/ls1997/p/10944206.html
Copyright © 2011-2022 走看看