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实现更改图片尺寸大小的方法(基于Pillow包)
Sep 19 Python
详谈在flask中使用jsonify和json.dumps的区别
Mar 26 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
python将list转为matrix的方法
Dec 12 Python
linux中如何使用python3获取ip地址
Jul 15 Python
对Django中的权限和分组管理实例讲解
Aug 16 Python
Python 调用 Windows API COM 新法
Aug 22 Python
python Kmeans算法原理深入解析
Aug 23 Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 Python
Python代码生成视频的缩略图的实例讲解
Dec 22 Python
Python实现http接口自动化测试的示例代码
Oct 09 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 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
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
jquery高级编程的最佳实践详解
2014/03/23 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
2017/09/11 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
python模拟鼠标拖动操作的方法
2015/03/11 Python
Python2.x版本中cmp()方法的使用教程
2015/05/14 Python
图文详解WinPE下安装Python
2016/05/17 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
python3字符串操作总结
2019/07/24 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
python区分不同数据类型的方法
2019/10/14 Python
关于Python中定制类的比较运算实例
2019/12/19 Python
将python包发布到PyPI和制作whl文件方式
2019/12/25 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
python切割图片的示例
2020/11/12 Python
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
实习生的自我评价
2014/01/08 职场文书
学术会议欢迎词
2014/01/09 职场文书
三下乡活动方案
2014/01/31 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
公司开除员工通知
2015/04/22 职场文书
小学家庭教育心得体会
2016/01/14 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers