Django框架中视图的用法


Posted in Python onJune 10, 2022

视图层

一个视图函数,简称视图,是一个简单的 Python 函数,它接受 Web 请求并且返回 Web 响应。

响应可以是一个 HTML 页面、一个 404 错误页面、重定向页面、XML 文档、或者一张图片...

无论视图本身包含什么逻辑,都要返回响应。代码写在哪里都可以,只要在 Python 目录下面,一般放在项目的 views.py 文件中。

每个视图函数都负责返回一个 HttpResponse 对象,对象中包含生成的响应。

视图层中有两个重要的对象:请求对象(request)与响应对象(HttpResponse)。

一、请求对象: HttpRequest 对象(简称 request 对象)

以下介绍几个常用的 request 属性。

1、GET

数据类型是 QueryDict,一个类似于字典的对象,包含 HTTP GET 的所有参数。

有相同的键,就把所有的值放到对应的列表里。

取值格式:对象.方法。

get():返回字符串,如果该键对应有多个值,取出该键的最后一个值。

def runoob(request):
    name = request.GET.get("name")
    return HttpResponse('姓名:{}'.format(name))

Django框架中视图的用法

2、POST

数据类型是 QueryDict,一个类似于字典的对象,包含 HTTP POST 的所有参数。

常用于 form 表单,form 表单里的标签 name 属性对应参数的键,value 属性对应参数的值。

取值格式: 对象.方法。

get():返回字符串,如果该键对应有多个值,取出该键的最后一个值。

def runoob(request):
    name = request.POST.get("name")
return HttpResponse('姓名:{}'.format(name))

Django框架中视图的用法

3、body

数据类型是二进制字节流,是原生请求体里的参数内容,在 HTTP 中用于 POST,因为 GET 没有请求体。

在 HTTP 中不常用,而在处理非 HTTP 形式的报文时非常有用,例如:二进制图片、XML、Json 等。

def runoob(request):
    name = request.body
print(name)
return HttpResponse("菜鸟教程")

Django框架中视图的用法

4、path

获取 URL 中的路径部分,数据类型是字符串。

def runoob(request):
    name = request.path
    print(name)
    return HttpResponse("菜鸟教程")

Django框架中视图的用法

5、method

获取当前请求的方式,数据类型是字符串,且结果为大写。

def runoob(request):
    name = request.method
    print(name)
    return HttpResponse("菜鸟教程")

Django框架中视图的用法

二、响应对象:HttpResponse 对象

响应对象主要有三种形式:HttpResponse()、render()、redirect()。

HttpResponse(): 返回文本,参数为字符串,字符串中写文本内容。如果参数为字符串里含有 html 标签,也可以渲染。

def runoob(request):
# return HttpResponse("菜鸟教程")
return HttpResponse("<a href='http://https://www.runoob.com/>菜鸟教程</a>")

Django框架中视图的用法

render(): 返回文本,第一个参数为 request,第二个参数为字符串(页面名称),第三个参数为字典(可选参数,向页面传递的参数:键为页面参数名,值为views参数名)。

def runoob(request):
    name ="菜鸟教程"
return render(request,"runoob.html",{"name":name})

Django框架中视图的用法

redirect():重定向,跳转新页面。参数为字符串,字符串中填写页面路径。一般用于 form 表单提交后,跳转到新页面。

def runoob(request):
return redirect("/index/")

render 和 redirect 是在 HttpResponse 的基础上进行了封装:

  • render:底层返回的也是 HttpResponse 对象
  • redirect:底层继承的是 HttpResponse 对象

到此这篇关于Django框架中视图用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。


Tags in this post...

Python 相关文章推荐
python实现计算倒数的方法
Jul 11 Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 Python
Python编程二分法实现冒泡算法+快速排序代码示例
Jan 15 Python
Python内置模块logging用法实例分析
Feb 12 Python
Python中pillow知识点学习
Apr 30 Python
用python编写第一个IDA插件的实例
May 29 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
Python的Lambda函数用法详解
Sep 03 Python
python3.x中安装web.py步骤方法
Jun 23 Python
python 实现波浪滤镜特效
Dec 02 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
python基础之//、/与%的区别详解
Jun 10 #Python
Django框架中表单的用法
Jun 10 #Python
移除Selenium中window.navigator.webdriver值
Jun 10 #Python
Django框架模板用法详解
Jun 10 #Python
python库Tsmoothie模块数据平滑化异常点抓取
使用Django框架创建项目
Jun 10 #Python
Python实现信息管理系统
Jun 05 #Python
You might like
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
PHP防盗链代码实例
2014/08/27 PHP
php 可变函数使用小结
2018/06/12 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
微信小程序实现上拉加载功能
2019/11/20 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
python使用super()出现错误解决办法
2017/08/14 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
通过代码实例了解Python异常本质
2020/09/16 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
本科生求职简历的自我评价
2013/10/21 职场文书
银行实习鉴定
2013/12/13 职场文书
全民健身日活动方案
2014/01/29 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
建议书的格式及范文
2015/09/14 职场文书
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android