• 模板路径的查找


    1.模板路径的查找


    • template模板的查找顺序:
    • django会优先在dirs里面的路径去查找模板路径
    • 当所查找的路径不在dirs里面的路径的时候,若app_dirs为True,则django会去install_apps里面去找

    2.模板变量


    当前后端发生数据交互的时候需要前端呈现动态的数据,比如,现在有个需求,需要在页面呈现时间。


    •  1 from django.shortcuts import render, HttpResponse, redirect, reverse
       2 from datetime import datetime
       3 
       4 # Create your views here.
       5 
       6 
       7 def index(request):
       8     # html = get_template('crm/index.html')
       9     # html = html.render()
      10     # return HttpResponse(html)
      11     now = datetime.now()
      12     return render(request, 'crm/index.html', context={
      13         'now': now
      14     })
    •  1 <!DOCTYPE html>
       2 <html lang="en">
       3 <head>
       4     <meta charset="UTF-8">
       5     <title>Title</title>
       6 </head>
       7 <body>
       8     <form action="">
       9         <h1>测试模板页面</h1>
      10         <h2>当前页面的时间为: {{ now }}</h2>
      11         <p>用户名:<input type="text"></p>
      12         <p>密码:<input type="password"></p>
      13         <p><input type="submit" value="提交"></p>
      14     </form>
      15 </body>
      16 </html>

      

    • 在view视图的函数的render方法中传入context变量,context传入一个字典,字典的key值为html模板使用的模板变量,value为所呈现的数据。
    • 使用方法,在模板中使用两个大括号包裹住context中的key值。
    • 注意:模板变量的命令方法和python的命名方式相同,但不能以下划线开头,不能够有空格和标点符号,不能用python和django的关键字命名。
    • 变量的值可以是python的任何数据类型

    3.模板变量的解析规则


    •  1 from django.shortcuts import render, HttpResponse, redirect, reverse
       2 from datetime import datetime
       3 
       4 
       5 # Create your views here.
       6 
       7 
       8 def index(request):
       9     now = datetime.now()
      10     lists = [1, 2, 3]
      11     dict_ = {'name': 'ivy'}
      12     def func():
      13         return '我是一个函数'
      14     return render(request, 'crm/index.html', context={
      15         'lists': lists,
      16         'dict_': dict_,
      17         'func': func,
      18         'now': now
      19     })
       1 <!DOCTYPE html>
       2 <html lang="en">
       3 <head>
       4     <meta charset="UTF-8">
       5     <title>Title</title>
       6 </head>
       7 <body>
       8     <form action="">
       9         <h1>测试模板页面</h1>
      10         <h2>当前页面的时间为: {{ now }}</h2>
      11         <h2>我是一个列表: {{ lists }}</h2>
      12         <h2>我是一个列表的一个值: {{ lists.1 }}</h2>
      13         <h2>我是一个字典: {{ dict_ }}</h2>
      14         <h2>我是一个字典里的值: {{ dict_.name }}</h2>
      15         <h2>我是一个函数: {{ func }}</h2>
      16         <h2>我是一个函数返回的值中的一个数: {{ func.3 }}</h2>
      17         <p>用户名:<input type="text"></p>
      18         <p>密码:<input type="password"></p>
      19         <p><input type="submit" value="提交"></p>
      20     </form>
      21 </body>
      22 </html>

    • 变量的值可以是python的任何数据类型。
    • 可迭代对象可以通过.下标的方式来获取迭代对象的值。
    • 字典对象通过.key的方式获取key对应的value值。
    • 遇到(.)的时候,会按以下的顺序查找:
      • 字典的键值对
      • 属性或方法
      • 迭代对象的索引查找
    • 如果结果是可调用的,则调用它的时候不带参数。
    • 渲染失败则返回为空,调用的结果成为模板的值。

    4. 模板过滤器


     -常用的模板过滤器

    •  add:将参数与值相加 首先尝试转换成整数相加,失败,则尝试所有可能。  {{value|add:value_other}}
    • capfirst:将首字母大写,若第一个不是字母,则不起作用.    {{value|capfirst}}
    • date: 日期格式化。 {{value|date:'Y年m月d日  H时i分s秒’}}
    • default: 如果变量解析失败,使用给定的默认值 {{value|default:'nothing'}}   注:当value为空字符串的时候,default将会被执行。
    • first:返回列表的第一个元素。   {{value|first}}.
    • last: 返回列表的最后一个元素。  {{value|last}}
    • slice: 返回一个列表的切片。   {{value|slice:':2'}}
    • join: 与python的str.join(value)一样的用法。   {{value|join:'str'}}
    • floatformat: 浮点数格式化 不指定小数位数,则默认保留一个小数。    {{value|floatformat:3}}
    • length: 返回可迭代对象的长度。    {{value|length}}
    • length_is:判断迭代对象的长度是否为指定的数,返回bool值。  {{value|length_is:'num'}}
    • lower:字符串中的字母都变小写。   {{value|lower}}。
    • upper:字符串中的字母都变大学。   {{value|upper}}
    • tittle: 标题化,首字母大写    {{value: title}}
    • safe : 关闭变量的自动转义,使html标签生效{{value|safe}}
  • 相关阅读:
    java实现取球类的博弈问题
    下载安装eclipse
    配置jdk环境变量
    蓝桥杯三羊献瑞题目
    java用Kruskal实现最小生成树
    java创建自定义类的数组
    java暴力递归回溯算法
    易理解java代码8皇后问题
    Listview 点击获取view
    java android布局里的控件值 反射绑定给实体类,实体类绑定给控件,表单提交绑定很有用
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/10649337.html
Copyright © 2020-2023  润新知