下载软件的网站哪个好,微信公众号程序,李家沱网站建设,网站建设加盟创业关键词#xff1a;
Python、web开发、Django、模板语言 概要 作为 Python Web 开发的框架之一#xff0c;Django 提供了一套完整的 MVC 模式#xff0c;其中的模板语言为开发者提供了强大的渲染和控制前端的能力。本文介绍 Django 的模板语言。 1. Django 模板语言入门
Dj… 关键词
Python、web开发、Django、模板语言 概要 作为 Python Web 开发的框架之一Django 提供了一套完整的 MVC 模式其中的模板语言为开发者提供了强大的渲染和控制前端的能力。本文介绍 Django 的模板语言。 1. Django 模板语言入门
Django 的模板语言是一种基于 HTML 的模板语言它提供了丰富的标签和过滤器来帮助开发者实现前端渲染和逻辑控制。在使用模板语言之前我们需要先了解 Django 的模板文件结构和渲染方式。
1.1 模板文件的结构
在 Django 中模板文件通常存放在应用的 templates 目录下。一个模板文件通常由以下几部分组成 模板头部包含模板引用其他文件、定义模板块等信息。 模板主体包含实际的 HTML 代码和模板标签。 模板尾部包含 JavaScript 代码、CSS 样式等信息。
通常情况下我们只需要编写模板主体部分而头部和尾部可以使用已有的模板文件或者框架提供的默认模板。
1.2 模板的渲染方式
在 Django 中模板文件可以通过视图函数中的 render 函数进行渲染例如
from django.shortcuts import renderdef index(request):context {title: Hello World!}return render(request, index.html, context)在 render 函数中第一个参数是请求对象第二个参数是模板文件名第三个参数是传递给模板的上下文变量。在模板中我们可以通过变量名来访问上下文变量例如
h1{{ title }}/h1在模板渲染时Django 会将模板中的变量替换为上下文变量的值并执行模板标签和过滤器。 2. Django 模板语言进阶
除了简单的变量渲染Django 的模板语言还提供了丰富的标签和过滤器来实现逻辑控制和数据处理。下面我们将介绍一些常用的模板标签和过滤器。
2.1 模板标签
Django 的模板标签可以实现逻辑控制和数据处理常用的标签包括 if 标签用于条件判断。 for 标签用于循环迭代。 include 标签用于引入其他模板文件。 block 和 extends 标签用于模板继承和重载。 url 标签用于生成 URL。
例如我们可以使用 if 标签来判断一个变量是否为空
{% if variable %}p{{ variable }}/p
{% else %}pVariable is empty./p
{% endif %}使用 for 标签来循环迭代一个列表
{% for item in list %}li{{ item }}/li
{% endfor %}使用 include 标签引入其他模板文件
{% include header.html %}当我们需要在多个页面中使用相同的 HTML 结构时可以使用 Django 的模板继承和重载功能减少代码重复和维护成本。
先创建一个基础模板文件 base.html定义共用的 HTML 结构和 CSS 样式
!DOCTYPE html
html
headtitle{% block title %}{% endblock %}/titlelink relstylesheet hrefstyle.css
/head
bodydiv idheader{% block header %}{% endblock %}/divdiv idcontent{% block content %}{% endblock %}/divdiv idfooter{% block footer %}{% endblock %}/div
/body
/html在这个模板中使用了 block 标签来定义可重载的区域。例如 {% block title %}{% endblock %} 定义了一个名为 title 的区域该区域可以在子模板中被重载。
接下来创建一个子模板文件 child.html继承 base.html 并重载其中的区域
{% extends base.html %}{% block title %}Child Page{% endblock %}{% block header %}h1Child Header/h1
{% endblock %}{% block content %}pChild Content/p
{% endblock %}在该模板中我们使用 extends 标签来继承 base.html并使用 block 标签重载了 title、header 和 content 区域。在渲染该模板时Django 会自动将子模板中重载的区域插入到父模板中对应的位置最终生成完整的 HTML 页面。
通过模板继承和重载功能我们可以更加方便地管理和维护大型 Web 应用程序中的 HTML 结构和样式。
2.2 模板过滤器
Django 的模板过滤器可以对变量进行处理和格式化常用的过滤器包括 date用于格式化日期。 length用于获取列表长度。 upper 和 lower用于将字符串转换为大写和小写。 join用于将列表转换为字符串。 default用于设置默认值。
例如可以使用 date 过滤器来格式化日期
p{{ date|date:Y-m-d }}/p使用 length 过滤器获取列表长度
p{{ list|length }}/p使用 upper 和 lower 过滤器将字符串转换为大写和小写
p{{ string|upper }}/p
p{{ string|lower }}/p将日期格式化为指定的字符串。 p{{ post.pub_date|date:F j, Y }}/p截取列表的一部分元素。 ul{% for item in items|slice::3 %}li{{ item }}/li{% endfor %}/ul将文本中的URL自动转化为链接。 p{{ post.content|urlize }}/p3. Django 模板语言实战
在实际的 Web 开发中我们经常需要使用 Django 的模板语言来实现一些常用的功能。下面介绍几个实用的实战案例。
3.1 分页功能
在列表页面中通常需要实现分页功能。Django 提供了内置的分页模块可以帮助我们快速实现分页功能。首先需要在视图函数中引入分页模块
from django.core.paginator import Paginatordef list(request):items Item.objects.all()paginator Paginator(items, 10)page request.GET.get(page)items paginator.get_page(page)return render(request, list.html, {items: items})在模板中可以使用分页模块提供的标签和过滤器来实现分页功能
{% for item in items %}p{{ item.name }}/p
{% endfor %}{% if items.has_previous %}a href?page{{ items.previous_page_number }}上一页/a
{% endif %}{% for i in items.paginator.page_range %}{% if items.number i %}strong{{ i }}/strong{% else %}a href?page{{ i }}{{ i }}/a{% endif %}
{% endfor %}{% if items.has_next %}a href?page{{ items.next_page_number }}下一页/a
{% endif %}3.2 表单验证功能
在表单页面通常需要验证用户输入的数据是否合法。Django 提供了内置的表单验证模块可以帮助我们快速实现表单验证功能。首先需要定义一个表单类
from django import formsclass ContactForm(forms.Form):name forms.CharField(max_length50)email forms.EmailField()message forms.CharField(widgetforms.Textarea)这里定义了一个名为 ContactForm 的表单类其中包含三个字段name、email 和 message。name 字段使用了 CharField 类来验证用户输入的姓名限制最大长度为 50 个字符email 字段使用了 EmailField 类来验证用户输入的电子邮件地址确保其符合电子邮件地址的格式message 字段使用了 CharField 类并使用了 Textarea 组件来允许用户输入多行文本信息。
在视图函数中我们可以使用表单验证模块来验证用户输入的数据
from django.shortcuts import render
from .forms import ContactFormdef contact(request):if request.method POST:form ContactForm(request.POST)if form.is_valid():# 处理用户输入的数据return HttpResponseRedirect(/thanks/)else:form ContactForm()return render(request, contact.html, {form: form})在模板中我们可以使用表单模块提供的标签和过滤器来快速渲染表单
form methodpost{% csrf_token %}{{ form.as_p }}button typesubmit提交/button
/form技术总结
本文章介绍了 Django 的模板语言包括模板文件的结构、模板的渲染方式、常用的模板标签和过滤器以及实用的实战案例。 如果文章对你有所帮助欢迎点赞收藏转发感谢