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数据结构之二叉树的建立实例
Apr 29 Python
python实现网站的模拟登录
Jan 04 Python
python rsa 加密解密
Mar 20 Python
python实现微信远程控制电脑
Feb 22 Python
对python中两种列表元素去重函数性能的比较方法
Jun 29 Python
对python3中, print横向输出的方法详解
Jan 28 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
Apr 03 Python
python隐藏终端执行cmd命令的方法
Jun 24 Python
Python 爬虫性能相关总结
Aug 03 Python
python神经网络编程之手写数字识别
May 08 Python
Python实现天气查询软件
Jun 07 Python
Python实现日志实时监测的示例详解
Apr 06 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
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
php读取mssql的ntext字段返回值为空的解决方法
2014/12/30 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
php实现算术验证码功能
2018/12/05 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
javascript文件加载管理简单实现方法
2015/07/25 Javascript
javascript每日必学之封装
2016/02/23 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
利用jquery和BootStrap实现动态滚动条效果
2018/12/03 jQuery
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
Django 中间键和上下文处理器的使用
2019/03/17 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
python属于解释语言吗
2020/06/11 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
法国美发器材和产品购物网站:Beauty Coiffure
2016/12/05 全球购物
Herve Leger官网:标志性绷带连衣裙等
2018/12/26 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
光学与应用专业毕业生求职信
2014/09/01 职场文书
乌镇导游词
2015/02/02 职场文书
年度考核登记表个人总结
2015/03/06 职场文书