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  -->

原文地址:https://www.cnblogs.com/dongxiaodong/p/10497245.html

时间: 2024-07-30 18:29:51

Python后台开发Django( 模板 与 值匹配 )的相关文章

Python自动化开发 - Django基础

本节内容 一.什么是web框架 二.MVC和MTV视图 三.Django基本命令 四.路由配置系统 五.编写视图 六.Template 七.ORM 一.什么是web框架 对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器就是一个socket客户端 #!/usr/bin/env python #coding:utf-8 import socket def handle_request(client): buf = client.recv(1024) client.send("

Python基础之 Django模板

在上一章节中我们使用 django.http.HttpResponse() 来输出 "Hello World!".该方式将数据与视图混合在一起,不符合 Django 的 MVC 思想.   本章节我们将为大家详细介绍 Django 模板的应用,模板是一个文本,用于分离文档的表现形式和内容. 1.进入相应目录,创建项目命令如下: C:\Windows\system32>f: F:\>cd F:\python-work\DjangoDemos F:\python-work\Dj

python测试开发django-6.模板中include使用

前言 当我们打开一个网站的时候,在打开不同的页面时候,会发现每个页面的顶部.底部内容都差不多,这样就可以把这些公共的部分,单独抽出来. 类似于python里面的函数,把公共部分写成函数,然后调用就行了,这样就能实现代码的复用.django里面也有类似的功能,用include可以实现. 公共内容 如下图所示,网站的每个页面都有顶部导航,body正文,底部导航这三块内容 base.html内容 <!DOCTYPE html> <html lang="en"> <

Django模板系统(非常详细)(后台数据如何展示在前台)

前面的章节我们看到如何在视图中返回HTML,但是HTML是硬编码在Python代码中的这会导致几个问题:1,显然,任何页面的改动会牵扯到Python代码的改动网站的设计改动会比Python代码改动更频繁,所以如果我们将两者分离开会更方便2,其次,写后台Python代码与设计HTML是不同的工作,更专业的Web开发应该将两者分开页面设计者和HTML/CSS程序员不应该编辑Python代码,他们应该与HTML打交道3,程序员写Python代码同时页面设计者写HTML模板会更高效,而不是一个人等待另一

python django 模板

1 用两个大括号括起来的文字{{person_name}} 称为变量 2 被 大括号和面分号包围的文件({% if ordered_warranty %})是模板标签 3 过滤器是用管道符(|) 和Unix管道符一样 4 一旦你创建一个 Template 对象,你可以用 context 来传递数据给它. 一个context是一系列变量和它们值的集合.模板使用它来赋值模板变量标签和 执行块标签. 5 变量名必须由英文字符开始 (A-Z或a-z)并可以包含数字字符.下划线和小数点. (小数点在这里有

Django模板API

基础部分 模板是一个文档或者说一个普通的python字符串由Django模板语言标记而成.一个模板语言可以包括block标签或者是变量. 一个block标签是一个处于模板中的标记,能过完成一些事情. Block的定义看起来有点模糊,这是django开发团队有意为之的.比如一个block标签即可以用来输出内容:也可以被当做一个控制结构(比如if声明或者是for循环)从数据库中抓去数据:或者是通往另一个模板的入口. Block标签由"{%"和"%}"组成. 比如一个模板

Django模板系统详解

你可能已经注意到我们在例子视图中返回文本的方式有点特别.也就是说,HTML被硬性地直接写入 Python代码之中. 这种处理会导致一些问题: § 对页面设计的进行任何改变都必须对 Python代码进行相应的修改.站点设计的修改往往比底层Python代码的修改要频繁得多,因此如果可以在不进行 Python代码修改的情况下变更设计,那将会方便得多. § Python代码编写和 HTML 设计是两项不同的工作,大多数专业的网站开发环境都将他们分配给不同的人员(甚至不同部门)来完成.设计人员和 HTML

Django模板2

接着Django模板1继续写模板相关知识. if标签 {% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not ). 但是不允许在同一个标签中同时使用 and 和 or,下边是不合法的: {% if athlete_list and coach_list or cheerleader_list %} 多次使用同一个逻辑操作符是没有问题的,但是我们不能把不同的操作符组合起来. {% if athlete_list or coach_list

Django模板语言小记

1.blog.views.py  # Create your views here. from django.template import loader,Context from django.http import HttpResponse from blog.models import BlogPost def archive(request):     posts = BlogPost.objects.all()     t = loader.get_template('archive.