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下Fabric的简单部署方法
Jul 14 Python
使用python实现个性化词云的方法
Jun 16 Python
Python查看微信撤回消息代码
Jun 07 Python
python如何求解两数的最大公约数
Sep 27 Python
详解Python发送email的三种方式
Oct 18 Python
Python Django基础二之URL路由系统
Jul 18 Python
numpy中的meshgrid函数的使用
Jul 31 Python
python爬虫刷访问量 2019 7月
Aug 01 Python
Flask中endpoint的理解(小结)
Dec 11 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
Jan 02 Python
Django choices下拉列表绑定实例
Mar 13 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 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实现Soap通讯的方法
2014/11/03 PHP
功能强大的php分页函数
2016/07/20 PHP
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
jquery高效反选具体实现
2013/05/05 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
js获取及判断键盘按键的方法
2015/12/01 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
深入了解python中元类的相关知识
2019/08/29 Python
keras多显卡训练方式
2020/06/10 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
HTML5注册页面示例代码
2014/03/27 HTML / CSS
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
绘画设计学生的个人自我评价
2013/09/20 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
同学毕业留言寄语
2015/02/27 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
比赛主持人开场白
2015/05/29 职场文书
初中生物教学随笔
2015/08/15 职场文书
php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据
2021/04/01 PHP
Python实战之实现康威生命游戏
2021/04/26 Python
使用javascript解析二维码的三种方式
2021/11/11 Javascript
一文搞懂MySQL索引页结构
2022/02/28 MySQL
nginx七层负载均衡配置详解
2022/07/15 Servers