整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Django框架第十一讲-模板的定义、反向解析

Django框架第十一讲-模板的定义、反向解析

jango模板介绍

  1. 作为Web框架,Django提供了模板,可以很便利的动态生成HTML
  2. 模版系统致力于表达外观,而不是程序逻辑
  3. 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用

Django模板包含

  1. HTML的静态部分
  2. 动态插入内容部分
  3. Django模板语言,简写DTL,定义在django.template包中
  4. 由startproject命令生成的settings.py定义关于模板的值:
  5. DIRS定义了一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件
  6. APP_DIRS告诉模板引擎是否应该在每个已安装的应用中查找模板
  7. 常用方式:在项目的根目录下创建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定义模板

  1. 模板语言包括
  2. 变量
  3. 标签 { % 代码块 % }
  4. 过滤器
  5. 注释{# 代码或html #}

变量

  • 语法:

{{ variable }}

  1. 当模版引擎遇到一个变量,将计算这个变量,然后将结果输出
  2. 变量名必须由字母、数字、下划线(不能以下划线开头)和点组成
  3. 当模版引擎遇到点("."),会按照下列顺序查询:

字典查询,例如:foo["bar"]

  1. 属性或方法查询,例如:foo.bar
  2. 数字索引查询,例如:foo[bar]
  • 如果变量不存在, 模版系统将插入'' (空字符串)
  • 在模板中调用方法时不能传递参数

在模板中调用对象的方法

  • 在models.py中定义类HeroInfo

  • 在views.py中传递HeroInfo对象

  • 在模板detail.html中调用

{{hero.showName}} 标签

  • 语法:{ % tag % }
  • 作用
  • 在输出中创建文本
  • 控制循环或逻辑
  • 加载外部信息到模板中供以后的变量使用
  • for标签

  • if标签

  • comment标签

  • include:加载模板并以标签内的参数渲染

{ %include "foo/bar.html" % }

  • url:反向解析

{ % 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:"什么也没有"

  • date:根据给定格式对一个date变量格式化

value|date:'Y-m-d'

注释

  • 单行注释

{#...#}

  • 注释可以包含任何模版代码,有效的或者无效的都可以

{# { % if foo % }bar{ % else % } #}

  • 使用comment标签注释模版中的多行内容

点击关注发私信(基础视频),即可获取下载链接:


板介绍

  1. 模板符号

谈到Python的Django框架的基础知识时,下面是一些你应该知道的要点:


  1. 安装和创建项目:首先,你需要安装Django框架。使用pip命令可以轻松地安装Django。一旦安装完成,你可以使用django-admin startproject命令来创建一个新的Django项目。
  2. 应用程序:Django的项目由多个应用程序组成,每个应用程序处理一个特定功能模块。你可以使用python manage.py startapp命令创建新的应用程序。每个应用程序包含模型、视图和模板等组件。
  3. 模型:Django的模型是与数据库表对应的Python类。定义模型时,你可以指定表的结构和字段。Django的ORM(对象关系映射)将会自动创建和管理数据库表。你可以使用简单的Python代码来执行数据库相关的操作,如创建、读取、更新和删除数据。
  4. 视图:Django的视图是处理Web请求的函数或类。视图接收请求并返回响应。你可以使用装饰器来定义不同类型的视图,如基于函数的视图或基于类的视图。视图还可以包含业务逻辑和数据处理。
  5. URL配置:URL配置将URL映射到相应的视图函数或类。在项目的urls.py文件中,你可以设置URL规则和路径参数。每个应用程序都有自己的urls.py文件,可以将其包含在项目的urls.py文件中。
  6. 模板:Django的模板用于生成动态的HTML页面。你可以在模板中使用变量、过滤器和标签。模板可以帮助你将数据以动态方式嵌入到HTML页面中,并实现页面的复用。
  7. 静态文件管理:Django可以管理并提供静态文件,如CSS、JavaScript和图像等。静态文件可以通过STATIC_URL设置进行访问,并在模板中使用静态文件标签进行引用。
  8. 表单处理:Django提供了强大的表单处理功能。你可以使用模型表单或自定义表单来处理用户的输入数据。Django的表单可以进行验证和数据清理,以确保数据的有效性。
  9. 用户认证和授权:Django提供了内置的用户认证和授权功能。你可以使用Django的用户模型来管理用户账户、身份验证和权限控制。
  10. 中间件:Django的中间件是处理请求和响应的插件。中间件可以拦截请求或响应,并执行一些自定义的处理。它们可以用于实现日志记录、身份验证、跨站请求伪造(CSRF)保护等功能。

这些是Django框架的一些基础知识。通过学习和实践,你将能够构建功能强大的Web应用程序。Django有详细的官方文档和教程,供你参考和学习。

当你掌握了Django的基础知识后,以下是一些进阶的主题,可以帮助你深入学习和应用Django框架:

  1. 数据库关系:学习如何在模型中定义不同类型的数据库关系,如一对一、一对多和多对多关系。了解如何使用相关字段、反向关系和查询集来处理复杂的关系数据。
  2. 视图类和Mixin:除了函数视图外,学习如何使用视图类来组织和重用视图逻辑。掌握常见的视图类和Mixin,如ListView、DetailView和FormView,以及如何编写自定义Mixin。
  3. Django Admin:深入了解Django Admin后台管理界面,学习如何自定义后台显示、过滤、搜索、排序和行为等。掌握如何创建自定义的管理命令。
  4. 信号:学习如何使用Django的信号机制来实现模型的触发事件,如保存、删除等。了解常见信号的使用情景,并自定义信号处理函数。
  5. 缓存:了解如何使用Django的缓存框架来提升应用程序的性能。学习如何配置缓存后端、使用缓存装饰器和模板标签来缓存数据。
  6. 测试:深入学习如何编写自动化测试,包括模型、视图、表单和URL的测试。掌握单元测试、功能测试和集成测试的概念和实践。
  7. 安全性:了解常见的Web应用安全问题,并学习如何在Django应用中应用最佳实践,如跨站请求伪造(CSRF)保护、跨站脚本攻击(XSS)防护、安全的URL构建等。
  8. 国际化和本地化:学习如何在Django应用中实现多语言支持和本地化。了解如何使用翻译机制、区域设置和时区处理等功能。
  9. 第三方包和扩展:探索Django生态系统中丰富的第三方包和扩展,如Django REST framework、Django Celery、Django Crispy Forms等。了解如何集成和使用这些扩展来增强你的应用功能。
  10. 部署和扩展:学习如何将Django应用程序部署到生产环境中,包括配置服务器、使用Web服务器和应用服务器、使用容器化技术等。了解如何水平扩展和负载均衡你的应用。

这些是Django框架的一些进阶主题,将帮助你更深入地使用和理解Django。不断学习和实践,将使你成为一个熟练的Django开发者。希望对你有所帮助!