详解Django中 render() 函数的使用方法


Posted in Python onApril 22, 2021

render() 函数

在讲 render() 函数之前,我们在 Django 项目 index 文件夹的 urls.py 和 views.py 中编写如下功能代码:(不难,望读者细心阅之)

# index的 urls.py
from django.urls import path
form . import views

urlpatterns = [
    # 定义首页的路由
    path(' ', views.index, name='index'),
]
# index的views.py
from django.http import HttpResponse
def index(request):
    html = '<h1> Hello World </h1>'
    return HttpResponse(html, status=200)

视图函数 index 使用响应类 HttpResponse 实现响应过程。从 HttpResponse 的参数可知,第一个参数是响应内容,一般是网页内容或 JSON 数据,网页内容是以HTML语言为主的,JSON数据用于生成API接口数据。第二个参数用于设置HTTP状态码,它支持HTTP所有的状态码。

从源码角度分析,打开响应类 HttpResponse 的源码文件,发现 Django内置的响应类(本人在上篇文章中已讲过)都是在 HttpResponse 的基础上实现的,只不过它们的HTTP状态码有所不同,如图下所示。

详解Django中 render() 函数的使用方法

从 HttpResponse 的使用过程可知,如果要生成网页内容,就需要将 HTML 语言以 字符串的形式表示,如果网页内容过大,就会增加视图函数的代码量,同时也没有体现模板的作用,因此Django在此基础上进行了封装处理,定义了函数 render 和 redirect。
render()语法如下:

render(request, template_name, context=None, content_type=None, status=None, using=None)

render 的参数 request 和 template name 是必需参数,其余的参数是可选参数。各个参数说明如下。

  • request:浏览器向服务器发送的请求对象,包含用户信息、请求内容和请求方式等。
  • template_name:设重模板文件名,用于生成网页内容。
  • context:对模板上下文(模板变量)赋值,以字典格式表示,默认情况下是一个空字典。
  • content_type:响应内容的数据格式,一般情况下使用默认值即可。
  • status:HTTP状态码,默认为200。
  • using:设置模板引擎,用于解析模板文件,生成网页内容。

为了更好地说明 render 的使用方法,我们通过简单的例子来加以说明。在Django项目的index文件中的 views.py 和 templates 的 index.html 中编写以下代码:

# index的 views.py
from django.shortcuts import render
def index(request):
    value = {'title': 'Hello Django'}
    return render(request, 'index.html', context=value)
# templates 的 index.html
<!DOCTYPE html>
<html>
  <body>
    <h3> {{ title }} </h3>
  </body>
</html>

视图函数 index 定义的变量 value 作为 render 的参数 context,而模板 index.html 里通过使用模板上下文(模板变量){{ title }} 来获取变量 value 的数据,上下文的命名必须与变量 value 的数据命名(字典的key)相同,这样 Django 内置的模板引擎才能将参数context(变量value)的数据与模板上下文进行配对,从而将参数 context 的数据转换成网页内容。运行Django项目,在浏览器上访问127.0.0.1:8000即可看到网页信息,如图下所示。

详解Django中 render() 函数的使用方法

希望以上内容能够帮助到各位!

到此这篇关于Django中 render() 函数的使用方法的文章就介绍到这了,更多相关Django中 render() 函数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
PHP webshell检查工具 python实现代码
Sep 15 Python
Python pass 语句使用示例
Mar 11 Python
爬山算法简介和Python实现实例
Apr 26 Python
Python创建文件和追加文件内容实例
Oct 21 Python
python+selenium开发环境搭建图文教程
Aug 11 Python
python中验证码连通域分割的方法详解
Jun 04 Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
python离线安装外部依赖包的实现
Feb 13 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
Apr 25 Python
Python中OpenCV实现简单车牌字符切割
Jun 11 Python
python tkinter实现定时关机
Python爬虫之爬取某文库文档数据
Apr 21 #Python
Python数据分析之pandas函数详解
Apr 21 #Python
python基础之停用词过滤详解
Apr 21 #Python
python 模拟在天空中放风筝的示例代码
如何使用Python对NetCDF数据做空间相关分析
python实现简单倒计时功能
You might like
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
JS产生随机数的几个用法详解
2016/06/22 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
layer.prompt输入层的例子
2019/09/24 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
[01:42]DOTA2 – 虚无之灵
2019/08/25 DOTA
Python argv用法详解
2016/01/08 Python
python爬虫之百度API调用方法
2017/06/11 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
Python3.8中使用f-strings调试
2019/05/22 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
银行实习生自我鉴定范文
2013/09/19 职场文书
公司节能减排方案
2014/05/16 职场文书
个人求职自荐信范文
2015/03/06 职场文书
被告答辩状范文
2015/05/22 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL
4种方法python批量修改替换列表中元素
2022/04/07 Python