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 struct.unpack
Sep 06 Python
详解Python程序与服务器连接的WSGI接口
Apr 29 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
Jul 22 Python
浅析使用Python操作文件
Jul 31 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
Python OpenCV利用笔记本摄像头实现人脸检测
Aug 20 Python
python动态视频下载器的实现方法
Sep 16 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
Python爬虫使用bs4方法实现数据解析
Aug 25 Python
详解基于Scrapy的IP代理池搭建
Sep 29 Python
Python 数据可视化神器Pyecharts绘制图像练习
Feb 28 Python
python文件与路径操作神器 pathlib
Apr 01 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
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
PHP测试程序运行时间的类
2012/02/05 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
JavaScript版代码高亮
2006/06/26 Javascript
JavaScript使用cookie
2007/02/02 Javascript
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
Vue + Webpack + Vue-loader学习教程之功能介绍篇
2017/03/14 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
使用python分析git log日志示例
2014/02/27 Python
Python 的 Socket 编程
2015/03/24 Python
python实现k-means聚类算法
2018/02/23 Python
详解Python用户登录接口的方法
2019/04/17 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
2020/08/19 Python
品恩科技软件测试面试题
2014/10/26 面试题
几个MySql的面试题
2013/04/22 面试题
《北大荒的秋天》教学反思
2014/04/14 职场文书
中秋晚会策划方案
2014/06/12 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
Java详细解析==和equals的区别
2022/04/07 Java/Android
Nginx静态压缩和代码压缩提高访问速度详解
2022/05/30 Servers