百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Python Django Web 框架编程 - 模板 templates

ccwgpt 2025-03-30 14:45 17 浏览 0 评论

之前的例子中,HttpResponse都是把结果直接显示在页面上,也就是页面的设计写死在视图函数的代码里的。如果想改变页面的样子,就行需要修改 Python 代码,这样很不方便。 Django 提供了模板系统,只要创建一个视图,就可以将页面的设计从代码中分离出来。

Django 做为一个 Web 框架,采用了模板来动态生成 HTML。模板包含所需 HTML 输出的静态部分以及一些描述如何插入动态内容的特殊语法。

一个 Django 项目可以配置一个或多个模板引擎。Django 为自己的模板系统(创造性地称为 Django 模板语言 (DTL))和流行的替代方案 Jinja2 提供了内置后端。其他模板语言的后端可从第三方获得。

Django 定义了一个标准的 API,用于加载和渲染模板,与后端无关。加载包括查找给定标识符的模板并对其进行预处理,通常将其编译为内存中的表示形式。渲染意味着用上下文数据插入模板并返回结果字符串。

Django 模板语言是 Django 自己的模板系统。推荐使用 DTL。由于历史原因,对模板引擎的通用支持和 Django 模板语言的实现都位于 django.template 命名空间中。

创建模板template

在 mysite 目录下创建 templates 目录,并添加 index.html 文件,目录结构如下:

为了让 Django 模板引擎能够找到 templates 路径,需要在 mysite/settings.py 文件中的 templates 节点,设置DIRS 内容。DIRS 定义了一个目录列表,引擎应该在其中按搜索顺序查找模板源文件。在下图中设置了 templates 路径在项目的根目录下。


Django 模板语言

Django 模板只是使用 Django 模板语言标记的文本文档或 Python 字符串。一些构造被模板引擎识别和解释。主要的是变量和标签。

使用上下文呈现模板。渲染用它们的值替换变量,这些值在上下文中查找,并执行标签。其他一切都按原样输出。

Django 模板语言的语法涉及四个部分:

变量

变量从上下文中输出一个值,它是一个类似字典的对象,将键映射到值。

变量被 {{}} 包围,如下所示:

My first name is {{ first_name }}. My last name is {{ last_name }}.

使用 {'first_name': 'John', 'last_name': 'Doe'} 的上下文,此模板呈现为:

My first name is John. My last name is Doe.

字典查找、属性查找和列表索引查找是用点符号实现的:

{{ my_dict.key }}
{{ my_object.attribute }}
{{ my_list.0 }}

标签

标签在渲染过程中提供任意逻辑。这个定义故意含糊不清。例如,标签可以输出内容,用作控制结构,例如“if”语句或“for”循环,从数据库中获取内容,甚至启用对其他模板标签的访问。

标签被 {%%} 包围,如下所示:

{% csrf_token %}

一些标签需要开始和结束标签:

{% if user.is_authenticated %}Hello, {{ user.username }}.{% endif %}

过滤器

过滤器转换变量和标签参数的值。它们看起来像这样:

{{ django|title }}

使用 {'django': 'the web framework for perfectionists with deadlines'} 的上下文,此模板呈现为:

The Web Framework For Perfectionists With Deadlines

一些过滤器接受一个参数:

{{ my_date|date:"Y-m-d" }}

使用模板语言变量输出动态内容到页面

在模板文件 index.html 中输入下列内容:




  
  Title


   

{{ title }}

My first name is {{ first_name }}. My last name is {{ last_name }}.

其中 title,first_name,last_name 都是变量。需要从 view 中传递变量的值过来。

那么就需要对 polls/views.py 的 index() 进行修改。这里就需要用到 render 对模板进行数据渲染:

from django.shortcuts import render

#通过模板语言的变量进行传递信息
def index(request):
    context = {'title':'我的站点' ,'first_name': '乙丙', 'last_name': '白'}
    return render(request, 'index.html', context)

保存之后。在浏览器中访问:
http://127.0.0.1:8000/polls/。可以看到如下界面内容:

相关推荐

MFC、Qt、WPF?该用哪个?(mfc和wpf区别)

MFC、Qt和WPF都是流行的框架和工具,用于开发图形用户界面(GUI)应用程序。选择哪个框架取决于你的具体需求和偏好。MFC(MicrosoftFoundationClass)是微软提供的框架,...

一款WPF开发的通讯调试神器(支持Modbus RTU、MQTT调试)

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!项目介绍Wu.CommTool是一个基于C#、WPF、Prism、MaterialDesign...

关于面试资深C#、WPF开发工程师的面试流程和问题

一、开场(2-3分钟)1.欢迎应聘者,简单介绍公司和面试流程。2.询问应聘者是否对公司或岗位有初步的问题。二、项目经验与技术应用(10-20分钟)1.让应聘者详细介绍几个他参与过的C#、...

C# WPF MVVM模式Prism框架下事件发布与订阅

01—前言处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事件进行...

WPF 机械类组件动画制作流程简述(wps上怎么画机械结构简图)

WPF机械类组件动画制作流程简述独立观察员2025年3月4日一、创建组件创建组件用户控件,将组件的各部分“零件”(图片)拼装在一起,形成组件的默认状态:二、给运动部分加上Rend...

C#上位机WinForm和WPF选哪个?工控老油条的"血泪史"

作为一个从互联网卷进工控坑的"跨界难民",在这会摸鱼的时间咱就扯一下上位机开发选框架这档子破事。当年我抱着WPF的酷炫动画一头扎进车间,结果被产线老师傅一句"你这花里胡哨的玩意...

【一文扫盲】WPF、Winform、Electron有什么区别?

近年来,随着软件开发的不断发展,开发人员面临着选择适合他们项目的各种框架和工具的挑战。在桌面应用程序开发领域,WPF、Winform和Electron是三个备受关注的技术。本文将介绍这三者的区别,帮助...

一个开源、免费、强大且美观的WPF控件库

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!项目介绍HandyControl是一套基于WPF(WindowsPresentationF...

WPF 根据系统主题自动切换浅色与深色模式

WPF根据系统主题自动切换浅色与深色模式控件名:Resources作者:WPFDevelopersOrg-驚鏵原文链接[1]:https://github.com/WPFDevelopers...

WPF与WinForm的本质区别(wpf与maui)

在Windows应用程序开发中,WinForm和WPF是两种主要的技术框架。它们各自有不同的设计理念、渲染机制和开发模式。本文将详细探讨WPF与WinForm的本质区别,并通过示例进行说明。渲染机制W...

Win10/Win11效率神器再进化:微软发布PowerToys 0.90.0版本

IT之家4月1日消息,微软今天(4月1日)更新PowerToys,在最新发布的0.90.0版本中,修复多个BUG之外,引入多项功能更新,为Windows10、Windows...

一款非常漂亮的WPF管理系统(wpf架构及特性)

我们致力于探索、分享和推荐最新的实用技术栈、开源项目、框架和实用工具。每天都有新鲜的开源资讯等待你的发现!WPFManager项目介绍该项目是一款WPF开发的管理系统,数据库采用的MSSqlserv...

WPF 实现描点导航(wpf按钮的点击事件)

WPF实现描点导航控件名:NavScrollPanel作者:WPFDevelopersOrg-驚鏵原文链接[1]:https://github.com/WPFDevelopersOrg/WPF...

微软更新基于Win11的Validation OS 2504:增强 .NET与WPF

IT之家5月1日消息,科技媒体NeoWin今天(5月1日)发布博文,报道称微软公司更新基于Windows11的ValidationOS,增强支持.NET和WPF,并优...

WPF的技术架构与优势(wpf的前景)

WindowsPresentationFoundation(WPF)是一个现代化的用户界面框架,专为构建Windows应用程序而设计。它通过分层的技术架构和丰富的功能集,提供了全面的应用程...

取消回复欢迎 发表评论: