Python 全栈体系【三阶】(二)

第一章 Django

五、模板

1. 概述

Django中的模板是指可以动态生成任何基于文本格式文件的技术(如HTMLCSS等)。

Django中内置了自己的模板系统,称为DTL(Django Template Language), Django模板语言

2. 配置

settings.py中关于模板的配置如下:

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates',# 指定模板文件存储的位置'DIRS': [ BASE_DIR , 'templates'],# 自动搜索应用目录'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]

3. 渲染模板

Django的模板系统中,可通过render()函数来完成渲染模板的功能。

其语法结构是:

from django.shortcuts import renderrender(request,template_name,content=None,content_type=None,status=None)
  • request代表用于生成此响应的请求对象
  • template_name代表要渲染的模板文件的名称
  • content代表要传递到模板的数据形成的数据字典
  • content_type代表模板文件的MIME类型,默认为text/html
  • status代表响应的状态码,默认为200

render()函数返回HttpResponse对象,是更加简洁的输出。

六、DTL

DTL中的语法涉及四个部分:

  • 注释 – 注释
  • 变量 – 变量在模板被执行时将被替换为实际值 – {{ … }}
  • 标签 – 用于控制模板逻辑 {% … %}
  • 过滤器 – 用于转换变量或标签的值

1. 变量

DTL中的变量通过双花括号进行访问:

{{ variable }}
{{ variable.key }}
{{ variable.index }}
{{ variable.property }}

views.py的代码如下:

def variable(request):username = 'Tom'age = 23sex = Truescore = {'chinese':128,'math':149,'english':122}friends = ['John','Rose','Frank','Ben']return render(request,'variable.html',locals())

variable.html的代码如下:

<body><h1>Variable</h1><p>username:{{ username }}</p><p>age:{{ age }}</p><p>sex:{{ sex }}</p><p>chinese:{{ score.chinese }}</p><p>math:{{ score.math }}</p><p>english:{{ score.english }}</p><p>{{ friends.0 }},{{ friends.1 }},{{ friends.2 }},{{ friends.3 }}</p></body>

2. 标签

2.1 for

for标签用于遍历列表或字典,语法结构是:

{% for iterate_value in sequence %}......
{% endfor %}{% for iterate_value in sequence %}......
{% empty%}......
{% endfor %}

for循环中内置了一组变量供用户使用:

变量描述
forloop.counter循环记数器,从1开始
forloop.counter0循环记数器,从0开始
forloop.revcounter反向循环记数器,最后一个为1
forloop.revcounter0反向循环记数器,最后一个为0
forloop.first当前循环为第一个时,该变量值为True
forloop.last当前循环为最后一个时,该变量值为True

views.py的代码如下:

def forloop(request):books = [{'bookname': '孙子兵法大全集(超值金版)','price': 18.4,'publishing': '新世界出版社','category': '历史'},{'bookname': '甲骨文丛书·拿破仑大帝(全2册) ','price': 119.5,'publishing': '中信出版集团','category': '传记'},{'bookname': 'JavaScript DOM编程艺术(第2版)','price': 42.70,'publishing': '人民邮电出版社','category': '计算机'},{'bookname': '精通iOS开发 第8版','price': 102.20,'publishing': '人民邮电出版社','category': '计算机'},{'bookname': 'UNIX网络编程 卷1 套接字联网API(第3版)','price': 102.9,'publishing': '人民邮电出版社','category': '计算机'},{'bookname': '曾国藩的正面与侧面:1+2(套装共两册)','price': 59.30,'publishing': '岳麓书社','category': '传记'},{'bookname': '普京传:不可替代的俄罗斯硬汉 [Mr.Putin: Operative In The Kremlin]  ','price': 39,'publishing': '红旗出版社','category': '传记'},]context = {'books':books}return render(request,'forloop.html',context)

forloop.html的代码如下:

<table width="900" cellpadding="10" celspacing="0" border="1"><tr><td>序号</td><td>书名</td><td>价格</td><td>出版社</td><td>分类</td></tr>{% for book in books %}<tr><td>{{ forloop.counter }}</td><td>{{ book.bookname }}</td><td>{{ book.price }}</td><td>{{ book.publishing }}</td><td>{{ book.category }}</td></tr>{% endfor %}</table>
2.2 cycle

在每次遇到cycle标记时,都会产生一个参数。第一次产生第一个参数,第二次产生第二个参数,依次类推。一旦用尽所有参数,再次循环时则产生第一个参数。其语法结构是:

{% cycle 'value1' 'value2' 'value3' '...'%}
2.3 if
{% if condition %}...
{% endif %}或者{% if condition %}...
{% else %}...
{% endif %}或者{% if condition %}...
{% elif condition %}...
{% elif condition %}...
{% else %}...
{% endif %}
2.4 templatetag

基本语法结构是:

{% templatetag templatebit %}
模板位(templatebit)说明
openblock{%
closeblock%}
openvariable{{
closevariable}}
opencomment{#
closecomment#}
2.5 verbatim

verbatim标签用于告诉DTL停止渲染此标签内的内容,其语法是:

{% verbatim%}...
{% endverbatim %}
2.6 url

url标签用于近回与指定路由和可选参数相匹配的绝对路径引用(不包括域名),其格式为:

{% url 'route_name' arg1 arg2 .. %}
2.7 include

include标签用于在一个模板文件中包含另外一个模板文件,其语法结构是:

{% include 'filename' %}
2.8 csrf_token

csrf_token称为令牌标签,其作用是为了防止跨域请求伪造,其原理是表单内添加一个隐藏域,其值为加密信息,在表单POST提交时将与服务器产生的加密信息进行匹配,匹配成功则意味合法用户。

{% csrf_token %}

3. 过滤器

过滤器用于转换变量或标签参数的值,其语法结构是:

{{ value | filter}}
3.1 safe

safe用于标记一个字符串在输出前不需要对HTML标记进行转义,语法结构是:

{{ value | safe }}
3.2 truncatechars

用于完成字符串的截取,其语法结构是:

{{ value | truncatechars:长度 }}
3.3 yesno

True,FalseNone(可选)值映射到以英文逗号分隔的数据,其结构为:

{{ value | yesno:"True时的值,False时的值,None时的值"}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将资源前端通过 Docker 部署到远程服务器

作为一个程序员&#xff0c;在开发过程中&#xff0c;经常会遇到项目部署的问题&#xff0c;在现在本就不稳定的大环境下&#xff0c;前端开发也需要掌握部署技能&#xff0c;来提高自己的生存力&#xff0c;今天就详细说一下如何把一个前端资源放到远程服务器上面通过docker部…

紫外线芯片杀菌灯问题

1.265nm深紫外光子能量是多少 504kj/mol 2.紫外光分解有害物质的原理是什么&#xff1f; 通过紫外光分子键打断有害物质的分子键&#xff0c;使其分解成co2和H2o等无害物质 3.紫外光杀菌的原理是什么&#xff1f; 通过特定波长的紫外光照射&#xff0c;破坏和改变微生物的…

【网络协议】PIM

PIM 1 基本概念 PIM&#xff08;Protocol Independent Multicast&#xff09;协议&#xff0c;即协议无关组播协议&#xff0c;是一种组播路由协议&#xff0c;其特点是不依赖于某一特定的单播路由协议&#xff0c;而是可以利用任意单播路由协议建立的单播路由表完成RPF&…

【Python】不小心卸载pip后(手动安装pip的两种方式)

文章目录 方法一&#xff1a;使用get-pip.py脚本方法二&#xff1a;使用easy_install注意事项 不小心卸载pip后&#xff1a;手动安装pip的两种方式 在使用Python进行开发时&#xff0c;pip作为Python的包管理工具&#xff0c;是我们安装和管理Python库的重要工具。然而&#x…

产品经理技能揭秘:如何巧妙启发需求,引领市场新潮流

文章目录 引言一、需求启发的定义二、需求启发的艺术三、需求启发的重要性四、需求启发的流程五、需求启发的问题与挑战内部自身的问题与挑战&#xff1a;挑战一&#xff1a;知识的诅咒挑战二&#xff1a;做与定义的不同挑战三&#xff1a;沟通障碍挑战四&#xff1a;需求变更频…

solidity:构造函数和修饰器、事件

构造函数​ 构造函数&#xff08;constructor&#xff09;是一种特殊的函数&#xff0c;每个合约可以定义一个&#xff0c;并在部署合约的时候自动运行一次。它可以用来初始化合约的一些参数&#xff0c;例如初始化合约的owner地址&#xff1a; address owner; // 定义owner变…

电脑找回彻底删除文件?四个实测效果的方法【一键找回】

电脑数据删除了还能恢复吗&#xff1f;可以的&#xff0c;只要我们及时撤销上一步删除操作&#xff0c;还是有几率找回彻底删除文件。 当我们的电脑文件被彻底删除后&#xff0c;尽管恢复的成功率可能受到多种因素的影响&#xff0c;但仍有几种方法可以尝试找回这些文件。本文整…

使用 docker buildx 构建跨平台镜像

buildx是Docker官方提供的一个构建工具&#xff0c;它可以帮助用户快速、高效地构建Docker镜像&#xff0c;并支持多种平台的构建。使用buildx&#xff0c;用户可以在单个命令中构建多种架构的镜像&#xff0c;例如x86和arm架构&#xff0c;而无需手工操作多个构建命令。此外bu…

【React Hooks原理 - useCallback、useMemo】

介绍 在实际项目中&#xff0c;useCallback、useMemo这两个Hooks想必会很常见&#xff0c;可能我们会处于性能考虑避免组件重复刷新而使用类似useCallback、useMemo来进行缓存。接下来我们会从源码和使用的角度来聊聊这两个hooks。【源码地址】 为什么要有这两个Hooks 在开始…

使用selenium定位input标签下的下拉框

先来看一下页面效果&#xff1a;是一个可输入的下拉列表 再来看一下下拉框的实现方式&#xff1a; 是用<ul>和<li>方式来实现的下拉框&#xff0c;不是select类型的&#xff0c;所以不能用传统的select定位方法。 在着手定位元素前一定一定要先弄清楚下拉列表…

前后端的学习框架

前后端的学习框架 视频链接&#xff1a;零基础AI全栈开发系列教程&#xff08;一&#xff09;_哔哩哔哩_bilibili

什么是后端?

1、什么是后端&#xff1f; 后端开发人员从事于构建Web应用程序背后的实际逻辑&#xff0c;负责通过API向前端或者其他系统提供其他需要的信息&#xff0c;如&#xff1a;数据。 实际上&#xff0c;开发web应用中对用户不可见的部分&#xff0c;称为web后端&#xff0c;也就是…

初学vue3与ts:获取组件ref实例

/*** 获取组件ref* param {VueComponentIns} 组件实例* returns 组件ref*/ // eslint-disable-next-line export function useCompRef<T extends abstract new (...args: any) > any>(_: T) {return ref<InstanceType<T>>(); }使用 <a-com ref"a…

汇凯金业:数字货币对经济的影响有哪些

随着信息技术的飞速发展&#xff0c;数字货币作为一种新兴的货币形态&#xff0c;正逐步走进人们的视野&#xff0c;并对传统经济体系产生着深远影响。它不仅革新了交易方式&#xff0c;更在重塑金融格局、赋能经济发展等方面展现出巨大潜力。 一、交易效率的“加速器” 数字…

单例模式之懒汉式

文章目录 单例模式&#xff08;懒汉式&#xff09;代码懒汉式&#xff08;线程不安全&#xff09;懒汉式&#xff08;线程安全&#xff0c;加锁&#xff09;双重检查锁&#xff08;线程安全&#xff0c;推荐&#xff09; 单例模式&#xff08;懒汉式&#xff09; 懒汉式是符合…

xxl-job集成SpringBoot

安装xxl-job客户端一般有很多方式&#xff0c;我这里给大家提供两种安装方式&#xff0c;包含里面的各项配置等等。 前期需要准备好MySQL数据库。复制SQL到数据库里面。 # # XXL-JOB v2.4.2-SNAPSHOT # Copyright (c) 2015-present, xuxueli.CREATE database if NOT EXISTS x…

项目机会:4万平:智能仓,AGV,穿梭车,AMR,WMS,提升机,机器人……

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 如下为近期国内智能仓储物流相关项目的公开信息线索&#xff0c;这些项目具体信息会发布到知识星球&#xff0c;请感兴趣的球友先人一步到知识星球【智能仓储物流技术研习社】自行下载…

《SoC设计方法与实现》:全面掌握系统芯片设计精髓(可下载)

SoC&#xff08;System on Chip&#xff0c;系统级芯片&#xff09;设计是一项复杂而精细的工程活动&#xff0c;它涉及到将一个完整的电子系统的所有组件集成到一个单一的芯片上&#xff0c;包括处理器核心、内存、输入/输出端口以及可能的其他功能模块。这种集成不仅要求设计…

oracle存储结构-----逻辑存储结构(表空间、段、区、块)

文章目录 oracle存储结构图&#xff08;逻辑存储物理存储&#xff09;oracle逻辑存储结构图逻辑存储结构、表空间、段、区、数据块的关系&#xff1a;1、数据 块&#xff08;block&#xff09;---逻辑存储最小单位2、 数据区&#xff08;extent&#xff09;--存储空间分配和回收…

【AutoencoderKL】基于stable-diffusion-v1.4的vae对图像重构

模型地址&#xff1a;https://huggingface.co/CompVis/stable-diffusion-v1-4/tree/main/vae 主要参考:Using-Stable-Diffusion-VAE-to-encode-satellite-images sd1.4 vae 下载到本地 from diffusers import AutoencoderKL from PIL import Image import torch import to…