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. Jmeter压测学习5---HTTP Cookie管理器

    我司项目暂时不需要,直接转载:https://www.cnblogs.com/yoyoketang/p/11963342.html 前言 web网站的请求大部分都有cookies,jmeter的HTT ...

  2. 基于python的pixiv爬虫

    基于python的pixiv爬虫 1.目标 在和朋友吹逼过程中,聊到qq群机器人,突发奇想动手做一个p站每日推荐色图的色图机,遂学习爬虫. 目标: 批量下载首页推荐色图. 由于对qq机器人不熟,先利用 ...

  3. 缓冲区溢出利用与ShellCode编写

    一.实验目的 熟悉编写shellCode的流程 掌握缓冲区溢出的利用 二.实验环境 系统环境:Windows环境 软件环境:C++ ,缓冲区溢出文件链接 三.实验原理 要实施一次有效的缓冲区溢出攻击, ...

  4. mysql-router-MIC-8.0.26集群部署

    1.具体部署详情请看视频 https://space.bilibili.com/677825194 2.mysql主要配置如下 cat > /etc/my.cnf <<EOF [cl ...

  5. GDP区域分布图的生成与对比(ArcPy实现)

    一.背景 各地区经济协调发展是保证国民经济健康持续稳定增长的关键.GDP是反映各地区经济发展状况的重要指标.科学准确分析各地区GDP空间分布特征,对制定有效措施,指导经济协调发展具有重要参考价值. 二 ...

  6. 一个神秘的oj2093 花园的守护之神(最小割)

    给定一张无向图,你每次可以将一条路的权值增加1,询问最少增加多少次才会使得\(s->t\)的最短路改变 QwQ一看到这个题,我就用种最小割的感觉 我们可以把最短路上的点取出来,然后做最小割呀!! ...

  7. Rvalue References

    Rvalue References

  8. kviy TextInput 触发事件

    from kivy.uix.widget import Widget from kivy.app import App from kivy.lang import Builder Builder.lo ...

  9. NOIP模拟83(多校16)

    前言 CSP之后第一次模拟赛,感觉考的一般. 不得不吐槽多校联测 OJ 上的评测机是真的慢... T1 树上的数 解题思路 感觉自己思维有些固化了,一看题目就感觉是线段树. 考完之后才想起来这玩意直接 ...

  10. Ubuntu 用户管理/权限管理

    Ubuntu 用户管理/权限管理 小小记录一下 Ubuntu 下用户/权限管理常用的一些命令 用户管理 组管理 文件权限 给用户添加 sudo 权限 给用户添加 sudo 权限 首先先给出几个文件 / ...