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实现备份文件实例
Sep 16 Python
用实例分析Python中method的参数传递过程
Apr 02 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
pandas值替换方法
Jul 10 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
Jun 18 Python
Python logging设置和logger解析
Aug 28 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
通过实例学习Python Excel操作
Jan 06 Python
python读取ini配置的类封装代码实例
Jan 08 Python
python实现控制台输出彩色字体
Apr 05 Python
Cpython解释器中的GIL全局解释器锁
Nov 09 Python
Python打包为exe详细教程
May 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链接MySQL的常用扩展函数
2014/10/23 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
使用按钮控制以何种方式打开新窗口的属性介绍
2012/12/17 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
BootStrapTable服务器分页实例解析
2016/12/20 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
python 文件与目录操作
2008/12/24 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
如何整合JQuery和Prototype
2014/01/31 面试题
公司周年庆活动方案
2014/08/25 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
教师先进个人材料
2014/12/17 职场文书
介绍信如何写
2015/01/31 职场文书
会计岗位职责范本
2015/04/02 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python