Django学习笔记(第二天:render函数渲染网页模板,使用网页模板输出数据,实现前端页面与数据分离)

server/2025/2/13 6:01:20/

Django 模板

在 HelloWorld 目录底下 创建 templates 目录并 新建 runoob.html文件,整个目录结构如下:

HelloWorld/
|-- HelloWorld
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py
|   |-- urls.pyc
|   |-- views.py
|   |-- views.pyc
|   |-- wsgi.py
|   `-- wsgi.pyc
|-- manage.py
`-- templates`-- runoob.html

runoob.html 文件代码如下:
HelloWorld/templates/runoob.html 文件代码:

<h1>{{ hello }}</h1>

从模板中我们知道 变量使用了双括号。

接下来向Django说明模板文件[runoob.html]的路径,修改HelloWorld/settings.py,修改 TEMPLATES 中的 DIRS[os.path.join(BASE_DIR, ‘templates’)]
(templates即模板文件所在的目录)(DIRS的初始值是:‘DIRS’: [])
如下所示:
HelloWorld/HelloWorld/settings.py 文件代码:

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],       # 修改位置'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',],},},
]

修改 views.py,增加一个新的对象,用于向模板提交数据
HelloWorld/HelloWorld/views.py 文件代码:

from django.shortcuts import renderdef runoob(request):context	= {}	#定义一个空字典context['hello'] = 'Hello World!'return render(request, 'runoob.html', context)

一、什么是render函数

render函数是Django框架中的一个函数,它的作用是将数据和模板进行结合,生成最终的HTML页面。在使用Django开发Web应用程序时,我们通常会使用render函数来渲染页面。

二、render函数的用法

render函数的用法非常简单,它只需要接收三个参数:

  1. request: 表示HTTP请求对象,它包含了客户端发送的所有数据。我们通常会使用request对象来获取客户端发送的数据,例如GET或POST请求中的参数

  2. template_name: 表示模板文件的名称,它通常位于应用程序的templates目录下。

  3. context: 表示一个字典,它包含了需要传递给模板的数据

三、常见问题

  1. render函数找不到模板文件
    在使用render函数时,如果指定的模板文件不存在,就会出现找不到模板文件的错误。通常情况下,我们需要确保模板文件的名称和路径都是正确的,并且位于应用程序的templates目录下。

  2. render函数无法传递数据
    在使用render函数时,如果无法将数据传递给模板,就会出现无法渲染页面的错误。通常情况下,我们需要确保context参数包含了需要传递给模板的数据,并且这些数据的键值对是正确的

  3. render函数无法渲染页面
    在使用render函数时,如果无法渲染页面,就会出现无法显示页面的错误。通常情况下,我们需要确保模板文件中的语法是正确的,并且模板文件中的变量和标签都能够正确地解析和渲染。

HelloWorld/HelloWorld/urls.py 文件代码:

from django.urls import pathfrom . import viewsurlpatterns = [path('runoob/', views.runoob),
]

urls.py的作用:根据url匹配相应视图函数。

此处将runoob路径的映射,匹配views.py中的runoob函数。
return得到向runoob.html中的传递context数据,context字典数据中的hello匹配模板runoob.html中的{{ hello }}变量。

再次访问 http://127.0.0.1:8000/runoob,可以看到页面:
在这里插入图片描述

总结

使用 render 来替代之前的 HttpResponse,使用模板来输出数据,实现数据(view.py)与视图(runoob.html)分离。

view.py 视图(向模板(前端页面)传递数据,此处认为,视图(view.py)即数据源
Template 模板


http://www.ppmy.cn/server/167249.html

相关文章

Qt:Qt网络

目录 Qt网络介绍 UDP Socket TCP Socket HTTP Client 总结 Qt网络介绍 和多线程类似&#xff0c;Qt为了支持跨平台&#xff0c;对网络编程的API也进行了重新封装。咱们接下来的重点介绍Qt的网络相关的API的使用。 实际Qt开发中进行网络编程&#xff0c;也不⼀定使用Qt封…

docker compose部署flink集群

本次部署2个jobmanager和3个taskmanager 一、部署zookeeper集群 flink使用zookeeper用作高可用 部署集群参考&#xff1a;docker compose部署zookeeper集群-CSDN博客 二、创建目录及配置文件 创建timezone文件&#xff0c;内容填写Asia/Shanghai 手动创建目录&#xff1a…

用php tp6对接钉钉审批流的 table 表格 明细控件 旧版sdk

核心代码 foreach ($flows[product_list] as $k>$gift) {$items_list[] [[name > 商品名称, value > $gift[product_name] ?? ],[name > 规格, value > $gift[product_name] ?? ],[name > 数量, value > $gift[quantity] ?? ],[name > 单位, v…

Linux——信号

前言&#xff1a;本文主要介绍信号是什么&#xff0c;信号的产生以及核心转储的机制。 一、信号 1&#xff09;信号是什么 信号&#xff0c;又称为软中断信号&#xff0c;是Linux系统响应某些条件而产生的一个事件。是操作系统向一个进程或者线程发送的一种异步通知&#xff0…

ROG NUC小而强的秘密,游戏体验MAX

作为ROG第一款迷你主机&#xff0c;ROG NUC以其强大的性能和出色的设计&#xff0c;成为众多游戏爱好者关注的焦点。我们来看看它究竟能否凭借小巧的机身&#xff0c;在游戏中展现惊人实力。 硬件在手&#xff0c;游戏跟我走 ROG NUC有2个配置版本可选&#xff0c;ROG NUC 760…

【深度学习入门_机器学习理论】决策树(Decision Tree)

本部分主要为机器学习理论入门_决策树算法&#xff0c;书籍参考 “ 统计学习方法&#xff08;第二版&#xff09;”。 学习目标&#xff1a; 熟悉决策树基础知识&#xff1a;树、熵、信息增益、基尼指数&#xff1b;熟悉决策树构建步骤&#xff1b;熟悉3种典型决策树算法&…

支持向量机(一)

支持向量机是典型的二分类模型&#xff0c;以其模型简单、实现简单、效果卓越而著称。 一元支持向量机 我们通过一条中间线根据特征对样本实现分类&#xff0c;很明显&#xff1a;两个支持样本的差别越大&#xff0c;两个支持样本的分类效果就越好。 二元支持向量机 在实际生…

ChunkKV:优化 KV 缓存压缩,让 LLM 长文本推理更高效

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…