zoukankan      html  css  js  c++  java
  • Python后台开发Django( 模板 与 值匹配 )

     模板文件(templates)

    在setting.py中,设置模板存放位置

    在APP中view的使用

    from django.shortcuts import render #导入
    def homex(requestx):
       return render(requestx,"loginx.html") #返回文件

    页面模板

    实现页面的布局重复利用,建立模板中内部的名字如果在匹配中没有进行值替换,则显示原数据

    建立页面模板

    在需要替换值的地方写入如下即可,其中dongdata1为内部名字,模板文件名任意,如tempx.html

    {% block dongdata1 %} <span>555</span> {% endblock %}
    {% block dongdata2 %} <spna>666</spna>{% endblock %}

    使用页面模板

    在使用模板的HTML文件中进行值替换

    <!--继承模板的文件名,只能有一个 -->
    {% extends "tempx.html" %}
    
    <!--替换模板的对应值-->
    {% block dongdata1 %}
    <div>222222222222222222</div>
    {% endblock %}
    
    {% block dongdata3 %}
    <h1>东小东</h1>
    {% endblock %}

    页面模板2

    引入HTML片段,在指定的地方引入,一个文件中可以多出引用

    {% include "tempx2.html" %}

    值匹配

    简单值替换:

    传递单独变量,也可以是字典和列表

    模板(templates)的html文件中,注册变量

    <h1>{{dongkk1}}</h1>
    <h2>{{dongkk2}}</h2>

    APP控制器(views)设置匹配值

    from django.shortcuts import render #导入
    return render(requestx, "loginx.html",{"dongkk1":"替换值1","dongkk2":"替换值2"})  # 返回文件

    列表:

    return render(requestx, "loginx.html",{"listxto":["x1","x2","x3"]})  # 返回文件

    取值

    {{listxto.0}}

    字典:

    return render(requestx, "loginx.html",{"dictxto":{"d1":"dong11","d2":"dong22"}})  # 返回文件

    取值

    {{dictxto.d2}}

    条件判断

    {% if dongx > 19 %}
      <img src="static/img/an.png">
    {% else %}
       <img src="static/img/kkz.png">
    {% endif %}

    循环替换:

    类似于PHP的volist功能,实现在视图文件中进行列表的循环遍历,最常会使用其进行数据库表格的遍历显示。

    APP控制器(views)设置匹配值

    1 from django.shortcuts import render #导入
    2 listx = []
    3 listx.append({"id": 1, "user": "dong1", "name": "dongxiaodong1"})
    4 listx.append({"id": 2, "user": "dong2", "name": "dongxiaodong2"})
    5 listx.append({"id": 3, "user": "dong3", "name": "dongxiaodong3"})
    6 return render(requestx, "loginx.html",{"listxto":listx})  # 返回文件

    模板(templates)的html文件中,注册变量

     1 <table border="1">
     2            <!--表格头-->
     3            <thead>
     4               <tr>
     5                 <th>id</th>
     6                 <th>用户名</th>
     7                 <th>昵称</th>
     8               </tr>
     9             </thead>
    10             <!--表格内容-->
    11             <tbody>
    12                <!--循环遍历-->
    13                {% for rowx in listxto %}
    14                <tr>
    15                  <td>{{rowx.id}}</td>
    16                  <td>{{rowx.user}}</td>
    17                  <td>{{rowx.name}}</td>
    18                </tr>
    19               {% endfor %}
    20            </tbody>
    21 </table>

    循环特殊匹配值

    为循环添加升序序号,起始为1:【<td>{{forloop.counter}}</td>】
    为循环添加升序序号,起始为0:【<td>{{forloop.counter0}}</td>】
    为循环添加倒序序号,起始为1:【<td>{{forloop. revcounter}}</td>】
    为循环添加倒序序号,起始为0:【<td>{{forloop.revcounter0}}</td>】
    查看是否是第一条循环,返回bool【{{forloop.first}}】
    查看是否是最后一条循环,返回bool【{{forloop.last}}】

    匹配值修饰符:

    是否支持html代码

    值匹配时如果传递的值是html的代码,显示时会以原字符串显示,不会被浏览器解释,如果加上【|safe】则表示此值可以被浏览器解释

    {{ dongname|safe}}

    自定义修饰符:

    Django工程的setting.py的【INSTALLED_APPS = []】添加对应APP的名字【'dongapp2',】

    在对应的APP下建立templatetags目录,并在目录下建立任意名字的Python文件,如Dongtemp.py
    Dongtemp.py下:
     1 from django import template
     2 register = template.Library()
     3 #*****方式一****************************
     4 #不带参数
     5 @register.simple_tag
     6 def dongstr():
     7     return "东小东小"
     8 #带参数,参数可有任意个
     9 @register.simple_tag
    10 def dongcom(x,y):
    11     return x+y
    12 #*****方式二**************************
    13 #最多带两个参数
    14 @register.filter
    15 def dongstr222(x,y):
    16     return x+"--"+y
    17 #带一个参数
    18 @register.filter
    19 def dongstr333(x):
    20     return str(x).upper()
    在视图模板中使用
    {% load Dongtemp %}
    <div>{% dongstr %}</div> <!--  东小东小  -->
    <div>{% dongcom 10 30 %}</div><!--  40  -->
    <div>{{"参数1"|dongstr222:"参数2"}}</div><!-- 参数1--参数2   -->
    <div>{{"xYz"|dongstr333}}</div><!--  XYZ  -->
  • 相关阅读:
    BMC手册—具体工作内容。——在Agent中修改配置文件添加ping监控
    BMC手册—具体工作内容。——在PATROL Central控制台中添加Linux监控oracle的添加
    jetbrains 系列博客https://zhile.io/
    NavicatPremium15破解方法
    fastjson转换json字符串key的首字母小写变大写的解决办法
    Linux系统时间同步方法小结
    java同步/设置Linux系统时间
    Java代码获取NTP服务器时间
    IDEA2019 3.3 IDEA缓存和浏览缓存清除和设置
    一张图彻底搞懂MySQL的 explain
  • 原文地址:https://www.cnblogs.com/dongxiaodong/p/10497245.html
Copyright © 2011-2022 走看看