[Python]Django模板的配置及其语法(一)

简介: [Python]Django模板的配置及其语法

f33a5edb617c40828177e7a34f5b7339.jpg

前言

系列文章目录

[Python]目录

视频及资料和课件

链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234

提取码:1234

1. 模板的配置

在项目中单独创建一个文件夹templates,用于存放模板。

设置模板的查找路径

'DIRS': [ os.path.join(BASE_DIR, 'template') ],
• 1

2. 定义模板

定义模板其实就是定义一个html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>hello world</h1>
    {#  name 为模板等待接收的数据,需要View查询数据库传入模板  #}
    <h1>你好 {{ name }}</h1>
</body>
</html>

3. 模板的使用

调用模板分为两步骤:

  1. 找到模板,模板文件在模板目录中的相对路径 -> 返回模板对象
  2. 渲染模板

渲染模板使用Django提供的函数render()

render(request对象, 模板文件路径, 模板数据字典)
from django.shortcuts import render
from django.http import HttpRequest
from django.http import HttpResponse
from django.http import JsonResponse
from django.shortcuts import redirect
from django.urls import reverse
import json
from django.views import View
# Create your views here.
# 使用类视图
class LoginView(View):
  # get用于处理页面资源的获取
    def get(self, request):
        # 假设姓名数据为 张三
        name = '张三'
        # 组织传递给模板的数据
        # 将数据传递给模板,需要使用字典进行传递
        context = {
            'name': name
        }
        # render第一个参数为请求对象,第二个参数为模板路径,第三个参数为数据字典
        # 对模板进行渲染,并返回渲染后的页面
        return render(request, 'index.html', context)
    def post(self, request):
        return HttpResponse('post')

路由配置

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/', include(('login.urls', 'login'), namespace='login')),
    path('book/', include(('book.urls', 'book'), namespace='book'))
]
from django.urls import path
from login import views
urlpatterns = [
    path('', views.login),
    path('set_cookie/', views.set_cookie),
    path('get_cookie/', views.get_cookie),
    path('del_cookie/', views.del_cookie),
    path('set_session/', views.set_session),
    path('get_session/', views.get_session),
    path('class_login/', views.LoginView.as_view())
]

4. 模板语法

准备将要渲染到页面的数据:

class LoginView(View):
    def get(self, request):
        # 假设从数据库中查询出来的姓名为 张三
        name = '张三'
        # 将数据传递给模板,需要使用字典进行传递
        context = {
            'name': name,
            'age': 24,
            'birthday': datetime.now(),
            'friends': ['tom', 'jack', 'rose'],
            'money': {
                '2019': 12000,
                '2020': 15000,
                '2021': 20000
            }
        }
        # render第一个参数为请求对象,第二个参数为模板路径,第三个参数为数据字典
        return render(request, 'index.html', context)
    def post(self, request):
        return HttpResponse('post')

4.1 模板变量

变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。

模板变量的变量名要与传递进来的数据的变量名一致

语法如下:

{{ 模板变量 }}

模板变量可以使python的内建类型,也可以是对象。

4.2 获取指定的数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>hello world</h1>
    {#  name 为模板等待接收的数据,需要View查询数据库传入模板  #}
    <h1>你好 {{ name }}</h1>
    <p>年龄:{{ age }}</p>
    <p>生日:{{ birthday }}</p>
    <p>朋友:{{ friends }}</p>
    {#  获取列表中的某个元素,使用点+下标的方式进行获取  #}
    <p>女朋友:{{ friends.2 }}</p>
    {#  获取字典中的某个元素,使用点+key的形式获取  #}
    <p>第一年的薪资:{{ money.2019 }}</p>
</body>
</html>

4.3 模板中的for循环

语法:

{%  for item in items  %}
  循环体
{%  endfor  %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>hello world</h1>
    {#  name 为模板等待接收的数据,需要View查询数据库传入模板  #}
    <h1>你好 {{ name }}</h1>
    <p>年龄:{{ age }}</p>
    <p>生日:{{ birthday }}</p>
    <p>朋友:</p>
    <ul>
        {#    for 循环    #}
        {% for friend in friends %}
            {#    forloop.counter 获取循环的次序,forloop.count0 获取下标    #}
            <li>{{ forloop.counter }} {{ forloop.counter0 }} {{ friend }}</li>
        {% endfor %}
    </ul>
    {#  获取列表中的某个元素,使用点+下标的方式进行获取  #}
    <p>女朋友:{{ friends.2 }}</p>
    {#  获取字典中的某个元素,使用点+key的形式获取  #}
    <p>第一年的薪资:{{ money.2019 }}</p>
</body>
</html>

4.4 if语句

语法:

注意:符号的两边要有空格

{% if age < 10 %}
    ...
{% elif age >= 10 and age < 20 %}
    ...
{% else %}
    ...
{% endif %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>hello world</h1>
    {#  name 为模板等待接收的数据,需要View查询数据库传入模板  #}
    <h1>你好 {{ name }}</h1>
    <p>年龄:{{ age }}</p>
    <p>
        {% if age < 10 %}
            年龄小于10
        {% elif age >= 10 and age < 20 %}
            年龄大于10小于20
        {% else %}
            年龄大于20
        {% endif %}
    </p>
    <p>生日:{{ birthday }}</p>
    <p>朋友:</p>
    <ul>
        {#    for 循环    #}
        {% for friend in friends %}
            {#    forloop.counter 获取循环的次序,forloop.count0 获取下标    #}
            <li>{{ forloop.counter }} {{ forloop.counter0 }} {{ friend }}</li>
        {% endfor %}
    </ul>
    {#  获取列表中的某个元素,使用点+下标的方式进行获取  #}
    <p>女朋友:{{ friends.2 }}</p>
    {#  获取字典中的某个元素,使用点+key的形式获取  #}
    <p>第一年的薪资:{{ money.2019 }}</p>
</body>
</html>

4.5 模板语法中的运算符

比较运算符如下:

==
!=
<
>
<=
>=

布尔运算符如下:

and
or
not

4.6 模板语法中的注释

1)单行注释语法如下:

{# 注释内容 #}

2)多行注释使用comment标签,语法如下:

{% comment %}
  注释内容
{% endcomment %}

5. 过滤器

Django v4.0 中文文档

过滤器的本质为一个函数。

语法如下:

变量|过滤器:参数
  • 使用管道符号|来应用过滤器,用于进行计算、转换操作,可以使用在变量、标签中。
  • 如果过滤器需要参数,则使用冒号:传递参数。

常见的过滤器:

  • safe,禁用转义,告诉模板这个变量是安全的,可以解释执行
  • length,长度,返回字符串包含字符的个数,或列表、元组、字典的元素个数。
  • default,默认值,如果变量不存在时则返回默认值。
  • date,日期,用于对日期类型的值进行字符串格式化,常用的格式化字符如下:
  • Y表示年,格式为4位,y表示两位的年。
  • m表示月,格式为01,02,12等。
  • d表示日, 格式为01,02等。
  • j表示日,格式为1,2等。
  • H表示时,24进制,h表示12进制的时。
  • i表示分,为0-59。
  • s表示秒,为0-59。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>hello world</h1>
    {#  name 为模板等待接收的数据,需要View查询数据库传入模板  #}
    <h1>你好 {{ name }}</h1>
    <p>年龄:{{ age }}</p>
    <p>
        {% if age < 10 %}
            年龄小于10
        {% elif age >= 10 and age < 20 %}
            年龄大于10小于20
        {% else %}
            年龄大于20
        {% endif %}
    </p>
    <p>生日:{{ birthday|date:'Y-m-d H:i:s' }}</p>
    <p>朋友:</p>
    <ul>
        {#    for 循环    #}
        {% for friend in friends %}
            {#    forloop.counter 获取循环的次序,forloop.count0 获取下标    #}
            <li>{{ forloop.counter }} {{ forloop.counter0 }} {{ friend }}</li>
        {% endfor %}
    </ul>
    {#  获取列表中的某个元素,使用点+下标的方式进行获取  #}
    <p>女朋友:{{ friends.2 }}</p>
    {#  获取字典中的某个元素,使用点+key的形式获取  #}
    <p>第一年的薪资:{{ money.2019 }}</p>
</body>
</html>



相关文章
|
25天前
|
安全 Linux 网络安全
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
51 14
|
1月前
|
存储 开发者 Python
python基本语法
Python的基本语法简洁而强大,支持多种编程范式,包括面向对象编程和函数式编程。通过掌握变量和数据类型、操作符、控制结构、函数、类和模块等基本概念,可以有效地编写高效、可读的Python代码。无论是初学者还是经验丰富的开发者,Python都提供了丰富的工具和库来满足各种编程需求。
70 13
|
1月前
|
程序员 Linux Python
python中模板和包的使用
本文介绍了 Python 模块和包的基本概念及使用方法。模块是 Python 程序结构的核心,每个以 `.py` 结尾的源文件都是一个模块,包含可重用的代码。文章详细讲解了模块的导入方式(如 `import` 和 `from...import`),模块的搜索顺序,以及如何创建和发布自己的模块。此外,还介绍了包的概念,包是包含多个模块的特殊目录,并通过 `__init__.py` 文件定义对外提供的模块列表。最后,文章简述了如何使用 `pip` 工具管理第三方模块的安装与卸载。作者:大石头的笔记;来源:稀土掘金。
|
1月前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
41 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
2月前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
57 4
|
3月前
|
存储 索引 Python
Python 的基本语法
这些是 Python 的基本语法要素,掌握它们是学习和使用 Python 的基础。通过不断地实践和应用,你将能够更深入地理解和熟练运用这些语法知识,从而编写出高效、简洁的 Python 代码
170 61
|
3月前
|
IDE 数据挖掘 开发工具
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
58 7
|
3月前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
80 1
|
3月前
|
JSON Shell Linux
配置Python的环境变量可
配置Python的环境变量
320 4
|
3月前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。

热门文章

最新文章

推荐镜像

更多