热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Django基础template模版

2019独角兽企业重金招聘Python工程师标准template模版简介【具体示例参照博文最后的综合示例】模版语法模版组成HTML逻辑控制代码(如:python

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

template模版简介

==【具体示例参照博文最后的综合示例】==

模版语法

模版组成

HTML + 逻辑控制代码(如:python、PHP等)

逻辑控制代码组成

{{变量名称}}

创建模版

Template("内容")

模版变量

{'name':'text'}

Django环境

python manange.py shell

template模版 和 context上下文对象

>>>from django.template import Context,Template
>>>t = Template("Hello,{{ name }}")
>>>c = Context({'name':'Django'})
>>>t.render(c)
'Hello,Django'

句点符

句点符是一种 Django 深度查找变量比较快捷的一种方式,可用于字符串、字典、列表、类等多种类型的使用

变量的过滤器(filter)

语法

{{变量|filter:函数}}

默认函数

函数释义
add给变量添加相应的值
addslashes给变量中的引号加转义符
capfirst首字母大写
cut从字符串中移除指定字符
date格式化日期字符串
default如果值是False,替换成设置的值,否则为原值
default_if_none如果值是None,替换成设置的值,否则为原值

自定义函数

创建自定义函数条件

  • 在app中创建templatetags模块[必须使用此名称]
  • 创建任意.py文件

需要固定格式

from django import template
from django.utils.safestring import mark_saferegister = template.Library()
#register对象名称是固定的,不可改变#自定义过滤器【传参只能传一个】
@register.filter
def 自定义函数(参数):代码块return 返回值#自定义标签【不能用在控制语句】
@register.simple_tag
def 自定义函数(参数):代码块return 返回值

自定义过滤器使用

{{函数|自定义标签名}}

自定义标签使用

{% simple_tag_multi 值1 值2 %}

控制语句

if语句

语法

{%if 条件%}代码块
{%elif%}代码块
{%else%}代码块
{%endif%}

for循环语句

语法

{% for %}代码块
{% endfor %}

特殊变量释义
{{forloop.counter1}}循环计数,后跟数字为计数起始值
{{forloop.revcounter}}反向循环
{{forloop.revcounter2}}反向循环计数,后跟数字为计数起始值
{{forloop.first}}返回布尔值,第一次循环时值为True,其它循环为Flase
{{forloop.last}}返回布尔值,最后一次循环时值为True,其它循环为Flase

csrf_token 验证

  • Django视图中间件的一种安全机制
  • 开启方式: setting --- MIDDLEWARE 的参数中【默认开启】
  • 如果开启并且 模版中无 csrf_token 设置则返回403

setting开启设置,关闭注释即可,默认开启状态

'django.middleware.csrf.CsrfViewMiddleware',

模版设置

{% csrf_token %}

with 变量代替名

范围仅限于 with 和 endwith 之间

用法

{% with 新变量名=原变量名%}新变量名代码块
{% endwith %}

verbatim 禁止render

范围仅限于 verbatim 和 endverbatim 之间

{% verbatim %}代码块,全部以字符串形式出现
{% endverbatim %}

模版引入和模版继承

详见下文综合示例

综合示例

架构

MydjangoAPPmigrationstemplatesbackup.htmlindex.htmltest.htmltemplatetagsMyTag.pyadmin.pyapps.pymodels.pyviews.pyMydjangosettingsurls.pywsgi.py

全局配置

urls.py

from django.contrib import admin
from django.urls import path,re_path
from APP import viewsurlpatterns = [path('admin/', admin.site.urls),re_path('^$',views.Test),path('backup',views.Back),
]

settings.py 改动

INSTALLED_APPS 中添加你建立的应用'APP',以,号结尾

TEMPLATES配置:'DIRS': [os.path.join(BASE_DIR, 'APP/templates')],

APP应用配置

views.py

# -*- coding:utf8 -*-
from django.shortcuts import render
import datetime
class C_test():def __init__(self,name):self.name=name
def Test(request):A = "click"S = "hello,'Django'"T = datetime.datetime.now()M = ''N = NoneL = ["一","二","三"]D = {"name":"小明","age":20}C = C_test("小红")return render(request,"index.html",locals())
def Back(request):return render(request,"backup.html")

index.html

{% block Alter%}

---------------------------------- 句点符 ----------------------------------------

{{ L }}

{{ L.0 }}
{{ D }}

{{ D.name }}
{{ C }}

{{ C.name }}
---------------------------------- 过滤器 ----------------------------------------

{{ D.age|add:2 }}

{{ S|addslashes }}

{{ S|capfirst }}

{{ S|cut:'hello' }}

{{ T}}

{{ T|date }}

{{ M|default:"空值" }}

{{ N|default_if_none:"none值" }}
---------------------------------- 筛选器 ----------------------------------------

{{ S|first }}

{{ S|last }}

{{ S|length }}

{{ S|slice:":3" }}

{{ S|slice:":-5" }}

---------------------------------- 特殊符 ----------------------------------------

{{ S|filesizeformat }}

{{ A|safe }}

{{ S|urlencode }}
---------------------------------- 条件判断 ----------------------------------------

{% if D.age > 20 %}
{{D.name}}的年龄大于20

{% elif D.age is 20 %}
{{D.name}}的年龄等于20

{% else %}
{{D.name}}的年龄小于20

{%endif%}
---------------------------------- for循环语句 ----------------------------------------

{% for i in L %}
第{{forloop.counter}}次循环,循环内容{{i}}

{% endfor %}
---------------------------------- 模版继承 ----------------------------------------

  • 【模版范围是模版代码开始和结束之间的内容】
  • 【模版内容包含的变量代码不能继承,只能继承静态代码】



{% endblock%}

test.html

用于引用测试的HTML文件

backup.html

{% extends "index.html" %}
{% load staticfiles %}
{% block Alter%}

{{ block.super}}
{% include "test.html"%}
{% endblock%}

访问 http://127.0.0.1:8000 效果展示测试

---------------------------------- 句点符 ----------------------------------------
['一', '二', '三']

{'name': '小明', 'age': 20}
小明

小红
---------------------------------- 过滤器 ----------------------------------------
22
hello,\'Django\'
Hello,'Django'
,'Django'
Aug. 29, 2018, 5:10 p.m.
Aug. 29, 2018
空值
none值
---------------------------------- 筛选器 ----------------------------------------
h
'
14
hel
hello,'Dj
---------------------------------- 特殊符 ----------------------------------------
0 bytes
click
hello%2C%27Django%27
---------------------------------- 条件判断 ----------------------------------------
小明的年龄等于20
---------------------------------- for循环语句 ----------------------------------------
第1次循环,循环内容一
第2次循环,循环内容二
第3次循环,循环内容三
---------------------------------- 模版继承 ----------------------------------------
【模版范围是模版代码开始和结束之间的内容】
【模版内容包含的变量代码不能继承,只能继承静态代码】

访问 http://127.0.0.1:8000/backup 模版继承和改动测试

---------------------------------- 句点符 ----------------------------------------
---------------------------------- 过滤器 ----------------------------------------
空值
---------------------------------- 筛选器 ----------------------------------------
0
---------------------------------- 特殊符 ----------------------------------------
0 bytes
---------------------------------- 条件判断 ----------------------------------------
的年龄小于20
---------------------------------- for循环语句 ----------------------------------------
---------------------------------- 模版继承 ----------------------------------------
【模版范围是模版代码开始和结束之间的内容】
【模版内容包含的变量代码不能继承,只能继承静态代码】


转:https://my.oschina.net/zhaojunhui/blog/1936120



推荐阅读
  • Django框架进阶教程:掌握Ajax请求的基础知识与应用技巧
    本教程深入探讨了Django框架中Ajax请求的核心概念与实用技巧,帮助开发者掌握异步数据交互的方法,提升Web应用的响应速度和用户体验。通过实例解析,详细介绍了如何在Django项目中高效实现Ajax请求,涵盖从基础配置到复杂场景的应用。 ... [详细]
  • 成功实现Asp.Net MVC3网站与MongoDB数据库的高效集成
    我们成功地构建了一个基于Asp.NET MVC3框架的网站,并实现了与MongoDB数据库的高效集成。此次更新不仅完善了基本的创建和显示功能,还全面实现了数据的增删改查操作。在创建功能方面,我们修复了之前代码中的错误,确保每个属性都能正确生成。此外,我们还对数据模型进行了优化,以提高系统的性能和稳定性。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
  • 本文将介绍一种扩展的ASP.NET MVC三层架构框架,并通过使用StructureMap实现依赖注入,以降低代码间的耦合度。该方法不仅能够提高代码的可维护性和可测试性,还能增强系统的灵活性和扩展性。通过具体实践案例,详细阐述了如何在实际开发中有效应用这一技术。 ... [详细]
  • Django多条件筛选查询主模型只存在外键一对多关系模型设计#快捷筛选状态classStatus(models.Model):order_numbermodels.Positive ... [详细]
  • CSRF校验策略及装饰器和auth认证模块
    目录csrf跨站请求伪造csrf校验策略csrf相关装饰器auth认证模块auth认证相关模块及操作扩展auth_user表csrf跨站请求伪造钓鱼网站:模仿一个正规的网站让用户在 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • 全面解析Java虚拟机:内存模型深度剖析 ... [详细]
  • Go语言实现Redis客户端与服务器的交互机制深入解析
    在前文对Godis v1.0版本的基础功能进行了详细介绍后,本文将重点探讨如何实现客户端与服务器之间的交互机制。通过具体代码实现,使客户端与服务器能够顺利通信,赋予项目实际运行的能力。本文将详细解析Go语言在实现这一过程中的关键技术和实现细节,帮助读者深入了解Redis客户端与服务器的交互原理。 ... [详细]
  • 利用Jenkins与SonarQube集成实现高效代码质量检测与优化
    本文探讨了通过在 Jenkins 多分支流水线中集成 SonarQube,实现高效且自动化的代码质量检测与优化方法。该方案不仅提高了开发团队的代码审查效率,还确保了软件项目的持续高质量交付。 ... [详细]
  • 1、字段类型概述 一级分类二级分类具体类型核心类型字符串类型string,text,keyword整数类型integer,long,short,byte浮点类型double,flo ... [详细]
  • PostgreSQL13.1中文手册第 12 章 全文搜 ... [详细]
  • 第一种<script>$(".eq").on(&qu ... [详细]
author-avatar
aRuis
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有