Django框架第十一讲-模板的定义、反向解析
jango模板介绍
- 作为Web框架,Django提供了模板,可以很便利的动态生成HTML
- 模版系统致力于表达外观,而不是程序逻辑
- 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用
Django模板包含
- HTML的静态部分
- 动态插入内容部分
- Django模板语言,简写DTL,定义在django.template包中
- 由startproject命令生成的settings.py定义关于模板的值:
- DIRS定义了一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件
- APP_DIRS告诉模板引擎是否应该在每个已安装的应用中查找模板
- 常用方式:在项目的根目录下创建templates目录,设置DIRS值
DIRS=[os.path.join(BASE_DIR,"templates")]
Django模板处理
- Django处理模板分为两个阶段
- Step1 加载:根据给定的标识找到模板然后预处理,通常会将它编译好放在内存中
loader.get_template(template_name),返回一个Template对象
- Step2 渲染:使用Context数据对模板插值并返回生成的字符串
Template对象的render(RequestContext)方法,使用context渲染模板
快捷函数
- 为了减少加载模板、渲染模板的重复代码,django提供了快捷函数
- render_to_string("")
- render(request,'模板',context)
Django定义模板
- 模板语言包括
- 变量
- 标签 { % 代码块 % }
- 过滤器
- 注释{# 代码或html #}
变量
{{ variable }}
- 当模版引擎遇到一个变量,将计算这个变量,然后将结果输出
- 变量名必须由字母、数字、下划线(不能以下划线开头)和点组成
- 当模版引擎遇到点("."),会按照下列顺序查询:
字典查询,例如:foo["bar"]
- 属性或方法查询,例如:foo.bar
- 数字索引查询,例如:foo[bar]
- 如果变量不存在, 模版系统将插入'' (空字符串)
- 在模板中调用方法时不能传递参数
在模板中调用对象的方法
{{hero.showName}} 标签
- 语法:{ % tag % }
- 作用
- 在输出中创建文本
- 控制循环或逻辑
- 加载外部信息到模板中供以后的变量使用
- for标签
{ %include "foo/bar.html" % }
{ % url 'name' p1 p2 %}
- csrf_token:这个标签用于跨站请求伪造保护
{ % csrf_token %}
- 布尔标签:and、or,and比or的优先级高
- block、extends:详见“模板继承”
- autoescape:详见“HTML转义”
过滤器
- 语法:{ { 变量|过滤器 }},例如{ { name|lower }},表示将变量name的值变为小写输出
- 使用管道符号 (|)来应用过滤器
- 通过使用过滤器来改变变量的计算结果
- 可以在if标签中使用过滤器结合运算符
if list1|length > 1
name|lower|upper
list|join:", "
- default:如果一个变量没有被提供,或者值为false或空,则使用默认值,否则使用变量的值
value|default:"什么也没有"
value|date:'Y-m-d'
注释
{#...#}
{# { % if foo % }bar{ % else % } #}
点击关注发私信(基础视频),即可获取下载链接:
板介绍
- 模板符号
谈到Python的Django框架的基础知识时,下面是一些你应该知道的要点:
- 安装和创建项目:首先,你需要安装Django框架。使用pip命令可以轻松地安装Django。一旦安装完成,你可以使用django-admin startproject命令来创建一个新的Django项目。
- 应用程序:Django的项目由多个应用程序组成,每个应用程序处理一个特定功能模块。你可以使用python manage.py startapp命令创建新的应用程序。每个应用程序包含模型、视图和模板等组件。
- 模型:Django的模型是与数据库表对应的Python类。定义模型时,你可以指定表的结构和字段。Django的ORM(对象关系映射)将会自动创建和管理数据库表。你可以使用简单的Python代码来执行数据库相关的操作,如创建、读取、更新和删除数据。
- 视图:Django的视图是处理Web请求的函数或类。视图接收请求并返回响应。你可以使用装饰器来定义不同类型的视图,如基于函数的视图或基于类的视图。视图还可以包含业务逻辑和数据处理。
- URL配置:URL配置将URL映射到相应的视图函数或类。在项目的urls.py文件中,你可以设置URL规则和路径参数。每个应用程序都有自己的urls.py文件,可以将其包含在项目的urls.py文件中。
- 模板:Django的模板用于生成动态的HTML页面。你可以在模板中使用变量、过滤器和标签。模板可以帮助你将数据以动态方式嵌入到HTML页面中,并实现页面的复用。
- 静态文件管理:Django可以管理并提供静态文件,如CSS、JavaScript和图像等。静态文件可以通过STATIC_URL设置进行访问,并在模板中使用静态文件标签进行引用。
- 表单处理:Django提供了强大的表单处理功能。你可以使用模型表单或自定义表单来处理用户的输入数据。Django的表单可以进行验证和数据清理,以确保数据的有效性。
- 用户认证和授权:Django提供了内置的用户认证和授权功能。你可以使用Django的用户模型来管理用户账户、身份验证和权限控制。
- 中间件:Django的中间件是处理请求和响应的插件。中间件可以拦截请求或响应,并执行一些自定义的处理。它们可以用于实现日志记录、身份验证、跨站请求伪造(CSRF)保护等功能。
这些是Django框架的一些基础知识。通过学习和实践,你将能够构建功能强大的Web应用程序。Django有详细的官方文档和教程,供你参考和学习。
当你掌握了Django的基础知识后,以下是一些进阶的主题,可以帮助你深入学习和应用Django框架:
- 数据库关系:学习如何在模型中定义不同类型的数据库关系,如一对一、一对多和多对多关系。了解如何使用相关字段、反向关系和查询集来处理复杂的关系数据。
- 视图类和Mixin:除了函数视图外,学习如何使用视图类来组织和重用视图逻辑。掌握常见的视图类和Mixin,如ListView、DetailView和FormView,以及如何编写自定义Mixin。
- Django Admin:深入了解Django Admin后台管理界面,学习如何自定义后台显示、过滤、搜索、排序和行为等。掌握如何创建自定义的管理命令。
- 信号:学习如何使用Django的信号机制来实现模型的触发事件,如保存、删除等。了解常见信号的使用情景,并自定义信号处理函数。
- 缓存:了解如何使用Django的缓存框架来提升应用程序的性能。学习如何配置缓存后端、使用缓存装饰器和模板标签来缓存数据。
- 测试:深入学习如何编写自动化测试,包括模型、视图、表单和URL的测试。掌握单元测试、功能测试和集成测试的概念和实践。
- 安全性:了解常见的Web应用安全问题,并学习如何在Django应用中应用最佳实践,如跨站请求伪造(CSRF)保护、跨站脚本攻击(XSS)防护、安全的URL构建等。
- 国际化和本地化:学习如何在Django应用中实现多语言支持和本地化。了解如何使用翻译机制、区域设置和时区处理等功能。
- 第三方包和扩展:探索Django生态系统中丰富的第三方包和扩展,如Django REST framework、Django Celery、Django Crispy Forms等。了解如何集成和使用这些扩展来增强你的应用功能。
- 部署和扩展:学习如何将Django应用程序部署到生产环境中,包括配置服务器、使用Web服务器和应用服务器、使用容器化技术等。了解如何水平扩展和负载均衡你的应用。
这些是Django框架的一些进阶主题,将帮助你更深入地使用和理解Django。不断学习和实践,将使你成为一个熟练的Django开发者。希望对你有所帮助!
、