Django 视图

Django 视图

视图层

一个视图函数,简称视图,是一个简单的 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))

2、POST

数据类型是 QueryDict,一个类似于字典的对象,包含 HTTP POST 的所有参数。

常用于 form 表单,form 表单里的标签 name 属性对应参数的键,value 属性对应参数的值。

取值格式: 对象.方法。

get():返回字符串,如果该键对应有多个值,取出该键的最后一个值。

实例

def runoob(request):

name = request.POST.get("name")

return HttpResponse('姓名:{}'.format(name))

3、body

数据类型是二进制字节流,是原生请求体里的参数内容,在 HTTP 中用于 POST,因为 GET 没有请求体。

在 HTTP 中不常用,而在处理非 HTTP 形式的报文时非常有用,例如:二进制图片、XML、Json 等。

实例

def runoob(request):

name = request.body

print(name)

return HttpResponse("菜鸟教程")

4、path

获取 URL 中的路径部分,数据类型是字符串。

实例

def runoob(request):

name = request.path

print(name)

return HttpResponse("菜鸟教程")

5、method

获取当前请求的方式,数据类型是字符串,且结果为大写。

实例

def runoob(request):

name = request.method

print(name)

return HttpResponse("菜鸟教程")


响应对象:HttpResponse 对象

响应对象主要有三种形式:HttpResponse()、render()、redirect()。

HttpResponse(): 返回文本,参数为字符串,字符串中写文本内容。如果参数为字符串里含有 html 标签,也可以渲染。

实例

def runoob(request):

return HttpResponse("菜鸟教程")

return HttpResponse("<a href='https://www.runoob.com/'>菜鸟教程</a>")

render(): 返回文本,第一个参数为 request,第二个参数为字符串(页面名称),第三个参数为字典(可选参数,向页面传递的参数:键为页面参数名,值为views参数名)。

实例

def runoob(request):

name ="菜鸟教程"

return render(request,"runoob.html",{"name":name})

redirect():重定向,跳转新页面。参数为字符串,字符串中填写页面路径。一般用于 form 表单提交后,跳转到新页面。

实例

def runoob(request):

return redirect("/index/")

render 和 redirect 是在 HttpResponse 的基础上进行了封装:

  • render:底层返回的也是 HttpResponse 对象
  • redirect:底层继承的是 HttpResponse 对象
相关推荐
wqq63108551 小时前
Python基于Vue的实验室管理系统 django flask pycharm
vue.js·python·django
Q_Q19632884751 小时前
python大学生爱心校园互助代购网站_nyvlx_django Flask vue pycharm项目
python·django·flask
wxin_VXbishe7 小时前
C#(asp.net)学员竞赛信息管理系统-计算机毕业设计源码28790
java·vue.js·spring boot·spring·django·c#·php
码界筑梦坊7 小时前
330-基于Python的社交媒体舆情监控系统
python·mysql·信息可视化·数据分析·django·毕业设计·echarts
码界筑梦坊8 小时前
325-基于Python的校园卡消费行为数据可视化分析系统
开发语言·python·信息可视化·django·毕业设计
码界筑梦坊9 小时前
327-基于Django的兰州空气质量大数据可视化分析系统
python·信息可视化·数据分析·django·毕业设计·数据可视化
WangYaolove131419 小时前
基于python的在线水果销售系统(源码+文档)
python·mysql·django·毕业设计·源码
意疏1 天前
程序员兼职如何选择靠谱的软件外包平台 与 我的避坑经验
django
vx_biyesheji00011 天前
豆瓣电影推荐系统 | Python Django 协同过滤 Echarts可视化 深度学习 大数据 毕业设计源码
大数据·爬虫·python·深度学习·django·毕业设计·echarts
玄同7651 天前
Python 后端三剑客:FastAPI/Flask/Django 对比与 LLM 开发选型指南
人工智能·python·机器学习·自然语言处理·django·flask·fastapi