Django自学笔记 3-1 模板(Template)基础

Django 模板(Template) 作为 Web 开发框架,Django 提供了模板,可以很便利的动态生成 HTML。模版系统致力于表达外观,而不是程序逻辑。模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用。方式二:在应用的目录下创建 templates 目录,则无需配置 DIRS 值,程序会自动在该目录下寻找模板。 阅读详情

————总目录——前言——框架版本————

======================= 大爽歌作,made by big shuang =======================

一、模板(Template)基础

1 介绍

模板文件:让Django能够自动生成html代码

作为一个web框架,Django需要需要在html页面里展示python变量值或使用python代码
直接在html里面写入python代码是不行的,所以需要一种方便的方式(根据python变量或python代码)来动态生成HTML。
最常见的方法是使用模板。

注:想要弄懂模板,必须先懂点HTML,不用精通,认识和了解html基础语法、代码结构、相关概念就可以了,

2 代码示例

background.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>
        学生选课管理系统
    </title>
</head>
<body>
<div class="main-container">
    <div class="main-header">
        <div class="main-title">学生选课管理系统</div>
        <div class="sub-title">Student Course Management System</div>
        {% block welcome_message %}
        {% endblock %}
    </div>
    <div class="login-container">
        {% block login_container %}
        {% endblock %}
    </div>
</div>
</body>
</html>

login_home.html

{% extends "user/background.html" %}
{% block login_container %}
<div class="login-kind student-login-button">
    <a href="">学生登录</a>
</div>
<div class="login-kind teacher-login-button">
    <a href="">教师登录</a>
</div>
{% endblock %}

这里我们先不急着弄懂里面每行的意思,先观察一下模板(Template)html和普通的html有什么区别。

懂一点html的话,我们就会发现,模板(Template)里面多了一些这样的语句,这在html中是没有的

{% block welcome_message %}
{% endblock %}

{% block login_container %}
{% endblock %}

{% extends "user/background.html" %}
{% block login_container %}
{% endblock %}

这样的语句有什么特点呢。其写法是{%符号开头,以%}符号结尾,这两个符号和内部的文本用空格相隔。

这是Django模板语言的一种Tags(标签)语法,
Django模板语言的几种语法我们将在本章第二节做大类介绍,第三节做具体的介绍。

3 视图调用与传参

本文第二部分展示了一个模板的示例。
但是该模板要在前端展示出来,绝不是通过直接请求html对应的文件路径url来获得的。
而是要通过视图函数渲出来。

这里举个实例,本文第二部分的login_home.html在项目中的相对路径为
templates/user/login_home.html,用视图函数渲染这个模板,一个简单的写法如下

# views.py
from django.shortcuts import render

def home(request):
    return render(request, "user/login_home.html")

访问一个会调用该视图函数的url,即可得到渲染后的login_home.html如下图。

渲染模板的语法十分简单:
先从django.shortcuts中导入render方法
调用render方法,
第一个参数为视图函数接受的请求对象request,
第二个参数为模板文件的在模板文件夹下的相对路径,在上面的例子中是"user/login_home.html"。

这里我们举得例子是一个不用往模板中传入变量的例子。
但实际上,模板的设计就是让我们能够在里面展示python变量值或使用python代码。

所以往模板里面传入变量是一个基础操作,这个时候需要设置render里面的context变量,这是一个字典变量。
context变量的键是模板中能够直接使用的变量名,对应的值即是变量的值。
举个例子,需要往里面传入变量name,

# views.py
from django.shortcuts import render

def home(request):
    my_name = "Big Shuang"
    context = {
        "name": my_name
    }
    return render(request, "user/login_home.html", context)

在模板中要是用"Big Shuang"这个值,可以直接调用name这个变量。
只不过语法上还有点要求,一般在模板中会写成{{ name }}这样来调用视图中传入的变量。
具体模板的语法会在后面几个小节展开去说。

4 模板设置

参考目录:https://docs.djangoproject.com/en/2.2/ref/settings/#std:setting-TEMPLATES

模板的设置在setting.py变量TEMPLATES 里,默认值如下:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

变量TEMPLATES 为所有模板引擎的设置的列表。列表中的每一项都是一个字典,其中包含单个引擎的选项。
其中:

  1. DIRS:模板文件目录(引擎将按顺序搜索查找)。
    如项目文件夹下新建模板文件夹templates,则必须在设置里面的DIRS里添加项目文件夹"templates/"
  2. APP_DIRS:默认为True,代表能够在已安装的应用程序(setting.py里的变量INSTALLED_APPS里的app)中查找模板源文件。
    所以在已安装的应用程序里,新建模板文件夹templates,在里面写模板文件,视图函数能够自动去找到对应的模板文件,是不用修改设置的。
Django中template导入文件 template文件的导入 template文件就是普通的文件,需要用于template.render()函数渲染,可以有以下 几种方法来加载文件 1.用python自带的open()函数,如: from django.template import Template, Context from django.http import HttpResponse import 阅读详情

相关推荐

Django 教程- 模板(Template)

本文主要围绕Django模板讲解了模板标签,变量,过滤器,列表,字典,if/else,for标签,配置静态文件,逻辑与模板代码分离。

仲君Johnny的博客 1836

django template 模板介绍以及使用

模板介绍 作为Web框架,Django提供了模板,可以很便利的动态生成HTML 模版系统致力于表达外观,而不是程序逻辑 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用 模板包含 HTML的静态部分 动态插入内容部分 Django模板语言,简写DTL,定义在django.template包中 由startproject命令生成的settings.py定义关于模板的值: DIRS定义了一个目录

weixin_43899471的博客 537

为什么Nano Banana在图像一致性上碾压GPT和豆包?深度解析其技术原理与使用技巧

本文深度解析了Nano Banana在图像一致性上超越GPT和豆包等工具的技术原理。它通过基于参考图的强条件生成、精准的区域感知与掩码控制等核心技术,实现了“外科手术式”的精准图像编辑。文章还分享了包括提示词工程、参数调整在内的实用技巧,并探讨了通过API Key将其能力集成到自动化工作流中的潜力。

omega的博客 357

django - 模板(templates)和 使用

Django - templates(模板) 1. 简介 templates 的中文意思就是模板, 在django项目中该文件夹下是专门存放html文件的, 每一个html文件就是一个模板。模板是用来显示网页用的,在views.py文件中我们可以定义使用模板的方法。下面就来写一些干货。 2. 模板中循环、条件判断、常用标签、过滤器的使用 循环: 迭代显示列表、字典等中的内容...

单远涛 946

告别F5失灵!手把手教你为Cursor配置.Net Core控制台项目专属调试环境

本文详细指导如何在Cursor编辑器中为.Net Core控制台项目配置专属调试环境,解决F5失灵等常见问题。从调试器选择到launch.json配置,再到高级调试技巧,帮助开发者高效搭建完整的调试工具链,提升开发效率。

weixin_28834765的博客 286

雷赛控制卡全方位使用指南:从硬件连接到高级应用

雷赛控制卡以其接口简单、编程便捷、性价比高的特点,成为中小自动化设备的理想选择。使用时需注意:硬件连接需注重抗干扰设计(屏蔽线、接地);软件开发需合理配置运动参数(脉冲当量、加减速);调试阶段需充分利用 DMCStudio 工具验证性能。通过本文介绍的方法,可快速实现从硬件搭建到复杂运动控制的全流程开发,满足雕刻、切割、装配等多场景的自动化需求。

品质生活,极致编程。 3773

Django中的Template(模版)

Django模版系统 官方文档链接 1. 常用语法 Django模版中最常用的两种特殊符号:{{ }}和{% %} {{}}表示变量,在模版渲染的时候替换成具体的值 {%%}表示逻辑相关的操作,即一些逻辑语句 1.1 变量 模版中引用变量的方法:{{变量名}} 变量名是由字母数字和下划线组成 点(.)在模版语言中有特殊的含义,用来获取对象/变量的响应属性值 示例 view视图文件中的代码: fro...

qq_31851107的博客 2782

体验灵雀云-创建基于Docker的云服务

今天体验了一下灵雀云,创建了第一个基于Docker的云服务。 1.登录灵雀云 2.开始使用 登录之后,从"控制台"进入操作界面,开始创建服务。 首先需要选择一个镜像。灵雀云已经为您提供了一些常用的镜像列表。请在“常用镜像”列表中,选择“其它”,然后找到“alauda/hello-world”镜像,点击它右侧的“选择”按钮,进入服务参数配置页面。 选择完要创建的

tomcat的专栏 3234

html代码复用 extends,HTML+CSS入门 HTML的extends和include详解

本篇教程介绍了HTML+CSS入门 HTML的extends和include详解,希望阅读本篇文章以后大家有所收获,帮助大家HTML+CSS入门。<html>Title*{margin:0;padding:0;}{%include‘include.html‘%}调用include.html模板-----------------Name----------------...

weixin_42353805的博客 1602

Cisco思科 电子科技大学计算机网络 SRWE 期末技能考试 (PTSA)

电子科技大学2024春_SRWE_计算机网络系统 SRWE 期末技能考试 (PTSA)

2301_76745065的博客 5094

基于知识图谱的智能工作流引擎

随着大数据和人工智能技术的快速发展,企业和组织对数据的依赖程度日益增加。为了更好地管理和利用这些数据,知识图谱逐渐成为一种重要的工具。知识图谱不仅能够以结构化的方式表示复杂的知识,而且能够通过推理和查询提供深层次的信息。然而,如何将知识图谱应用于实际业务场景中,尤其是如何构建智能工作流引擎,仍然是一个具有挑战性的问题。智能工作流引擎是一种能够自动化执行复杂业务流程的系统,它可以通过对业务规则和数据的分析,自动生成和优化工作流,从而提高工作效率和准确性。

AI天才研究院 1871

Django框架与Templates模板及语法

这样写Django会默认去static这个目录下去寻找对应的路径文件,这样写的好处是:如果在之后项目上线,我们想要把这个静态文件移到别的地方去,文件名出现了变动,而之前的绝对路径的写法则同样需要做出改动,过于麻烦;而现在这种写法我们只需要更改settings.py文件下的配置信息,其余路径信息就会自动做出相应的改动。在Django中会默认去APP下的templates目录下去寻找 html 文件,并且会更具app的注册顺序,逐一去templates目录中去寻找它们相对应的文件。中间部分是需要执行的代码块。

minifagun的博客 897

092、Python在芯片验证中的应用:从脚本小子到验证架构师

Python在芯片验证中的高效应用 本文通过实际案例展示了Python在芯片验证中的关键作用。凌晨三点的调试场景揭示了传统方法的局限,Python脚本能在20分钟内分析80GB波形数据定位FIFO指针问题。文章重点介绍了两个核心工具: 智能日志分析系统:通过正则表达式和上下文分析,自动分类百万行验证日志中的错误,生成可视化报告,效率远超传统grep方法。 寄存器模型生成器:将Excel表格自动转换为UVM寄存器模型代码,将原本需要两周的手工工作缩短至两小时,同时保证零错误。 文章还展示了Python与Sys

z534437748的博客 72

django-template-partials入门指南:3分钟学会Django模板片段复用

django-template-partials 是一个为 Django 模板语言提供**可复用命名内联片段(Reusable named inline partials)**的轻量级开源库,让你在一个模板文件中定义片段、并在任意位置反复调用,彻底告别重复粘贴 HTML 的烦恼。本篇文章面向新手,用最少的代码带你快速上手 **Django 模板片段复用**,3 分钟即可跑通基本用法,并了解它与 D

gitblog_00348的博客 414

ABAP 后台作业里的消息机制:把 MESSAGE 写对,避免作业莫名取消

SAP后台作业消息处理机制解析 本文深入剖析了SAP系统中后台作业的消息处理机制,揭示了前台与后台执行环境的关键差异。核心发现包括: 后台作业对消息的处理规则: 所有消息写入Job log而不显示 根据消息类型决定是否继续执行 W警告在列表处理阶段会被自动转为E错误 关键异常处理: 通过error_message可捕获E/A类型消息 A类型消息会触发隐式数据库回滚 未被捕获的E/A消息将导致作业中断 实用解决方案: 将业务提示改为S或I类型 使用DISPLAY LIKE保持前台体验 通过error_mess

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2218

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

django-template-partials vs django-components:Django 模板组件化方案怎么选?

在 Django 项目里做**模板组件化**,很多开发者会在 `django-template-partials` 和 `django-components` 之间纠结。其实这两个库的定位差别很大:**django-template-partials 主打"轻量模板片段复用",django-components 则是"完整的组件体系"**。选错方案,轻则多写一堆样板代码,重则把整个模板架构带偏。本

gitblog_00869的博客 699

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

告别模板重复代码!django-template-partials基础用法完整教程

在 Django 项目中,模板里反复粘贴同一段 HTML(比如分页按钮、卡片、弹窗)是很多新手都踩过的坑。**django-template-partials** 正是为解决 Django 模板代码复用难题而生:它允许你在模板内部定义"命名片段"(partial),随取随用,无需新建大量子模板文件。本教程将用最通俗的语言,带你从安装到实战,快速掌握 django-template-partials

gitblog_00215的博客 471

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Django的请求和响应+template模板

在Django中,模板文件(如user_list.html)通常位于templates目录下,Django会根据settings.py中注册的app顺序查找相应的HTML文件。如果根目录下有templates文件夹,且settings.py中配置了DIRS,则从根目录开始查找。静态文件(如图片、CSS、JS)应放在static目录下,并在HTML模板中使用{% load static %}引入。Django的视图函数通过render方法返回HTML页面,并支持模板语法

一位搞嵌入式和前端的genius的博客 1326

Django 模板(Template)介绍与应用

作为 Web 开发框架,Django 提供了模板,可以很便利的动态生成 HTML。模版系统致力于表达外观,而不是程序逻辑。模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用。方式二:在应用的目录下创建 templates 目录,则无需配置 DIRS 值,程序会自动在该目录下寻找模板。

技术分享的博主 2117

Django 笔记之 Template 模板

Django 的模板语言 文章目录Django 的模板语言模板语法Variables 变量Tags 标签Filters 过滤器Comments内置 tags 和 filters内置 24 个 tag内置 filter 过滤器其他 tags 和 filter 模板语法 模板 是和 上下文 一起呈现的。 有四种语法结构。 Variables 变量 变量是 context 里的键 {{ key }} 关...

锐博客 668

深入源码:django-template-partials如何实现模板片段复用的原理剖析

模板片段复用是 Django 模板开发中提升代码复用率的关键技术。django-template-partials 正是这样一个开源项目,它为 Django 模板语言(DTL)提供了"可命名的内联模板片段复用"能力:你可以在一个模板内部定义多个命名片段,然后在同一模板甚至视图层按名称反复调用。本文将以源码为核心,一步步剖析它实现模板片段复用的底层原理,帮助你真正理解它"为什么能这样用"。 ##

gitblog_00614的博客 489

Python之 Django 模板渲染Template

1. Django自带模板 1.1 配置 在工程中创建模板目录templates。 在项目settings.py配置文件中修改TEMPLATES配置项的DIRS值: # 基本配置 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS':

wguo-up-site 3006

Django中Template理解

Template不同于普通的HTML文本 Template与普通HTML本质上都是普通的文本,不同的是Template由HTML代码与逻辑控制代码(包括后台传来的参数)组成 html可以通过浏览器直接打开,Template则需要通过django后台渲染后才是完整的HTML代码,再由浏览器渲染。 Demo: <!DOCTYPE html> <html lang="en"> &...

qq_28837549的博客 1837

django3.1 配置mako模板引擎

这里写自定义目录标题django3.1 配置mako模板引擎安装测试mako模板Django集成Mako:(django-mako插件方法)问题处理: django3.1 配置mako模板引擎 因为要二次开发HUE的原故.这里需要学习一下mako 模板引擎, 安装测试mako模板 操作系统:win10 相关环境:Python 3.7; Django 3.1 Mako是用python语言开发的开源模板引擎,功能很强大,使用起来也很方便,下面介绍一下安装步骤: pip install mako pip inst

大鹰的天空 845

Django Template Error 及解决方法

Traceback (most recent call last): File "", line 1, in t = template.Template("My name is {{ name }}.") File "C:\Python27\lib\site-packages\django\template\base.py", line 123, in __init__

NS 3305

Django template

创建模板Django 提供了一种模板语言,该语言被设计为能够快速呈现且易于使用。Django 模板是利用 {{ variables }} 和 {% tags %} 中嵌入的文本创建的。变量会使用它们表示的值进行计算和替换。标记用来实现基本的控制逻辑。模板可以用来生成任何基于文本的格式,包括 HTML、XML、CSV 和纯文本。第一个步骤是定义将模板加载到什么地方。为了简便起见,我们需要在 djpr

公众号 2025
上一篇: Django自学笔记 4-1 模型(Models)初步介绍+更新模型到数据库
下一篇: Django自学笔记 6-1 表单(Form)介绍
大爽歌
博客等级 码龄9年 422粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值