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之玩转字符串(2)更新篇
Sep 28 Python
python复制文件的方法实例详解
May 22 Python
Pycharm编辑器技巧之自动导入模块详解
Jul 18 Python
Python设计模式之原型模式实例详解
Jan 18 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
python调用webservice接口的实现
Jul 12 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
详解python列表(list)的使用技巧及高级操作
Aug 15 Python
Pytorch之卷积层的使用详解
Dec 31 Python
Python中 Global和Nonlocal的用法详解
Jan 20 Python
python 发送邮件的四种方法汇总
Dec 02 Python
Python结合百度语音识别实现实时翻译软件的实现
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
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
Bootstrap图片轮播效果详解
2017/10/17 Javascript
React全家桶环境搭建过程详解
2018/05/18 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
Python import自定义模块方法
2015/02/12 Python
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
MySQL最常见的操作语句小结
2015/05/07 Python
利用Python命令行传递实例化对象的方法
2016/11/02 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
Atom的python插件和常用插件说明
2018/07/08 Python
Python中GIL的使用详解
2018/10/03 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
Python序列类型的打包和解包实例
2019/12/21 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
pytorch数据预处理错误的解决
2020/02/20 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
中专生自我鉴定范文
2013/12/19 职场文书
活动邀请函范文
2014/01/19 职场文书
英文商务邀请信
2014/01/22 职场文书
幼师自荐信范文
2015/03/06 职场文书
《比尾巴》教学反思
2016/02/24 职场文书