7天学习计划之Python网络编程_Django-[第五天]

本文详细介绍了Django模板的各个方面,包括模板上下文、标签、继承和过滤器。模板上下文是视图传递的数据,标签如{%if%}、{%for%}用于控制输出。模板继承减少了代码重复,过滤器则用于内容处理。同时,文章还探讨了Jinja2模板引擎的安装配置和基本语法。
摘要由CSDN通过智能技术生成

Python网络编程_Django

一个人退到任何一个地方都不如退到自己的内心更宁静和更少烦恼



前言

Django是一个开源代码的Web应用框架,采用了MTV模式,即模型(Model)、模板(Template)、和试图(Views)。模型:负责数据存取层,处理与数据相关的事物;模板:处理与表现相关的决定;视图:存取模型及调取恰当模板的相关逻辑。其简便、快捷的开发数据库驱动的网站,有许多强大的第三方库。以下过程和程序采用python3.7,Django3。


提示:以下是本篇文章正文内容,下面案例可供参考

五、模板

模板包含所有 HTML的部分代码以及一些特殊语法,特殊语法用于描述如何将视图传递的数据动态的插入HTML网页中。Django可以配置一个或多个,前后端分离形式则不需要,模板引擎有Django、Jinja2。

1.Django

Django内置的模板引擎包括:模板上下文(模板变量)、标签和过滤器:
模板上下文是以变量的形式写入模板文件里,
标签是对模板上下文进行输出控制
模板继承,将每个文件的重复代码抽取并写在一个共用的模板
过滤器对模板上下文进行操作处理,内容截取、替换或格式转换

1.1模板上下文

模板上下文的数据由视图函数或视图类传递,他以{{variable}}表示,variable即可以是字符串或整型,也可以是字典、列表等,当获取的内容有某个属性时,就会选择,没有时就显示为空。

1.2标签

标签是对上下文的控制,表示为{%tag%},tag是标签的名称,内置的有{%if%}、{%for%}、{%url%},具体有:
{%if%}条件判断
{%for%}遍历输出
{%with%}重新命名
{%load%}加载导入Django的标签库
{%static%}读取静态资源的文内容
使用方法如下:

{%for item in mylist%}
{{item}}
{%endfor%}

{%if item == new%}
{{item}}
{%elif item == old%}
{{item}}
{%endif%}
#不带变量的URL
<a href=>"{% url 'index' %}">首页》</a>
#带变量的URL
<a href=>"{% url 'page' 1 %}">首页》</a>

其中for的特殊使用
forloop.counter获取当前循环的索引
forloop.revcounter索引从最大数开始递减
forloop.first当遍历元素为第一项时为真
forloop.last当遍历元素为最后一项时为真

1.3继承

通过将重复内容设置模板,减少重复代码:
一个完整的模板文件通常包括,除了这两个之外都是通用的。
例如先设置base.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
{% block title %}
	<title>首页</title>
{% endblock %}
<head>
{% block body %}{% endblock %}
<body>
</html>

调用方法:

{% extends "base.html" %}
{% block body %}
<a href=>"{% url 'index:index' %}">首页》</a>
<h1>Hello New
{% endblock %}

1.4过滤器

过滤器主要是对上下文的内容进行操作处理,如替换、反序和转义等。方法如下:
{{ variable | filter}}
支持多个过滤器:
{{ variable | filter | lower}}
可以传入一个参数,带参数的过滤器与参数之间用冒号隔开,并且两者之间不能留有空格。
{{ variable | date:“D d M Y”}}

2.Jinja2

增加了沙箱执行和可选的自动转义功能和可选的自动转义功能。

2.1安装配置
pip install Jinja2

Newneil中创建jinja2.py文件,在jinja2.py文件定义environment函数,利用jinja2的e、Environment进行实例化
在将environment写到配置文件settings.py中

2.2模板语法
{%for item in mylist()%}
{{item}}
{%endfor%}

{%if item == new%}
{{item}}
{%elif item == old%}
{{item}}
{%endif%}
#不带变量的URL
<a href=>"{{ url('index') }}">首页》</a>

#上下文
<div>{{ value['name']}}</div>
#使用过滤器
<div>{{ value['name'] | replace('Jinja2','Django')}}</div>


总结

避免重复无用的事情
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值