详解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 相关文章推荐
编写Python的web框架中的Model的教程
Apr 29 Python
Python基于FTP模块实现ftp文件上传操作示例
Apr 23 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
Python脚本按照当前日期创建多级目录
Mar 01 Python
python 字典访问的三种方法小结
Dec 05 Python
python列表生成器迭代器实例解析
Dec 19 Python
使用TensorFlow搭建一个全连接神经网络教程
Feb 06 Python
基于TensorBoard中graph模块图结构分析
Feb 15 Python
python代码xml转txt实例
Mar 10 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
Jun 05 Python
Python通过类的组合模拟街道红绿灯
Sep 16 Python
python如何查找列表中元素的位置
May 30 Python
python tkinter实现定时关机
Python爬虫之爬取某文库文档数据
Apr 21 #Python
Python数据分析之pandas函数详解
Apr 21 #Python
python基础之停用词过滤详解
Apr 21 #Python
python 模拟在天空中放风筝的示例代码
如何使用Python对NetCDF数据做空间相关分析
python实现简单倒计时功能
You might like
德生H-501的评价与改造
2021/03/02 无线电
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
Zend Framework教程之资源(Resources)用法实例详解
2016/03/14 PHP
php递归函数怎么用才有效
2018/02/24 PHP
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
javascript关于“时间”的一次探索
2019/07/24 Javascript
vue 清空input标签 中file的值操作
2020/07/21 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
python数据结构之二叉树的建立实例
2014/04/29 Python
Python实现CET查分的方法
2015/03/10 Python
Python循环语句中else的用法总结
2016/09/11 Python
Python爬虫常用小技巧之设置代理IP
2018/09/13 Python
Python 合并多个TXT文件并统计词频的实现
2019/08/23 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
2019/08/26 Python
python的launcher用法知识点总结
2020/08/07 Python
Python离线安装各种库及pip的方法
2020/11/28 Python
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
酒店员工职业生涯规划
2014/02/25 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python
MySQL约束超详解
2021/09/04 MySQL
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js