Django 自学笔记兼学习教程第3章第1节——模板(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> <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笔记&教程 3-1 模板(Template)基础的更多相关文章

  1. Django笔记&教程 6-2 表单(Form)基础操作

    Django 自学笔记兼学习教程第6章第2节--表单(Form)基础操作 点击查看教程总目录 1 - 编写表单类 创建新的表单类的代码,一般写到一个专门的forms.py文件中(一般放在对应的app文 ...

  2. Django笔记&教程 3-2 模板语法介绍

    Django 自学笔记兼学习教程第3章第2节--模板语法介绍 点击查看教程总目录 参考:https://docs.djangoproject.com/en/2.2/topics/templates/# ...

  3. Django笔记&教程 3-3 模板常用语法

    Django 自学笔记兼学习教程第3章第3节--模板常用语法 点击查看教程总目录 本文主要参考:https://docs.djangoproject.com/en/2.2/ref/templates/ ...

  4. Django笔记&教程 3-4 模板继承

    Django 自学笔记兼学习教程第3章第4节--模板继承 点击查看教程总目录 在介绍具体的技术之前,先介绍在什么样的场景中,需要使用这样的技术,我觉得这对于新手理解起来很重要. 一般来说,要渲染一个页 ...

  5. Django笔记&教程 5-1 基础增删查改

    Django 自学笔记兼学习教程第5章第1节--基础增删查改 点击查看教程总目录 第四章介绍了模型类models.Model和创建模型,相当于介绍了数据库表和如何创建数据库表. 这一章将介绍如何使用模 ...

  6. Django笔记&教程 总目录

    本篇博客只有目录,正文内容在目录章节链接的博客里 除目录本身外,没有链接的章节,说明内容还没开始编辑 本项目笔记仍在不断创作中,还有些内容会根据自身所学不断更新完善 本项目主要为markdwon文档, ...

  7. Django笔记&教程 1-2 二 常用配置

    Django 自学笔记兼学习教程第1章第2节--二 常用配置 点击查看教程总目录 新手建议简单浏览本文,不理解的建议跳过,不要强行理解. Django的设置涉及多个模块,需要了解Django的一些相关 ...

  8. Django笔记&教程 2-3 视图(view)函数介绍

    Django 自学笔记兼学习教程第2章第3节--视图(view)函数介绍 点击查看教程总目录 参考文献:https://docs.djangoproject.com/en/2.2/topics/htt ...

  9. Django笔记&教程 2-2 URL详细匹配规则

    Django 自学笔记兼学习教程第2章第2节--URL详细匹配规则 点击查看教程总目录 本章第一节中我们简单介绍了URL与View关系 简单概括来说,网页请求的url会通过urls.py里面的urlp ...

随机推荐

  1. 智汀家庭云-开发指南Golang:设备模块

    1.品牌 品牌指的是智能设备的品牌,SA通过插件的形式对该品牌下的设备进行发现控制.理论上来说一个品牌对应一个插件服务.您可以通过项目 根目录下的品牌查看SA支持的品牌.关于插件服务的详细信息可以参考 ...

  2. vue常见的三种组件通讯—props,$refs,this.$emit

    一.父组件--->子组件 props 1.特点:props是用于父组件向子组件传递数据信息(props是单向绑定的,即只能父组件向子组件传递,不能反向 2.用法:父组件中使用子组件时,绑定要传递 ...

  3. 查询windows日志

    系统日志可以用来查看系统的一些信息,比如警告.错误.验证.开关机等. 打开系统日志 按下快捷键win+R,输入eventvwr.exe,并点击确定 查询开关机记录 点击左侧Windows日志-> ...

  4. macbook air m1上传文件到github

    一,首先安装git,打开ssh文件里的id_rsa.pub,然后复制所有内容. 二,github上申请自己的账号,右上角settings里选择SSH and GPG keys,点击new ssh ke ...

  5. Bloom Filter算法

    Bloom Filter算法详解 什么是布隆过滤器 布隆过滤器(Bloom Filter)是 1970 年由布隆提出的.它实际上是一个很长的二进制向量和一系列随机映射函数 (下面详细说),实际上你也可 ...

  6. IP包头结构

    版本号(Version): 长度4比特.标识目前采用的IP协议的版本号.一般的值为0100(IPv4),0110(IPv6) IP包头长度(Header Length): 长度4比特.这个字段的作用是 ...

  7. 什么是关系图 (ERD)?

    首先,什么是实体关系图? 实体关系图,也称为ERD,ER图或ER模型,是一种用于数据库设计的结构图.一个ERD包含不同的符号和连接器,它们可视化两个重要信息:系统范围内的主要实体,以及这些实体之间的相 ...

  8. 【二食堂】Alpha - 事后分析

    事后分析 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? Alpha阶段要解决的问题是:根据用户标注的信息完成知识图谱的生成渲染.要解决的问题定义得比较 ...

  9. 了解 js 堆内存 、栈内存 。

    js中的堆内存与栈内存 在js引擎中对变量的存储主要有两种位置,堆内存和栈内存. 和java中对内存的处理类似,栈内存主要用于存储各种基本类型的变量,包括Boolean.Number.String.U ...

  10. STM32的串口通信

    本篇文章主要讲解一个在开发过程中经常使用到的一个外设---串口. 串口是绝大多数 MCU 中不可或缺的一个外设,同时也是我们开发中经常使用的一种调试手段,所以在STM32的学习中,串口的配置使用也是必 ...