Django视图

本文详细介绍了Django中的视图功能,包括视图函数、HttpRequest和HttpResponse对象的使用,以及状态保持机制的实现,如cookie和session。讨论了URL配置、错误视图、URL参数捕获,以及HttpRequest对象的GET和POST属性。同时,讲解了HttpResponse对象的响应处理,如设置cookie和使用JsonResponse。最后,探讨了cookie的工作原理、特点和应用场景,并阐述了session的使用流程和安全性优势。
摘要由CSDN通过智能技术生成

Django中视图的功能:

  • 接收请求,进行处理,与M和T进行交互,返回应答
  • 返回html内容HttpResponse、重定向页面redirect、json数据及异常等

1. 视图函数

定义视图函数:参数:request(必须),返回一个HttpResponse类型的对象或者HTTP404异常(参数名可以自定义不建议修改)
URL配置:建立URL与视图函数之间的对应关系
URL配置
  • 在项目的urls文件中包含具体应用的urls文件,在具体应用的urls文件中包含具体url和视图的对应关系
  • url配置项定义在一个名叫urlpatterns的列表中,其中的每一个元素就是一个配置项,每一个配置项都调用url函数(高版本使用path、re_path函数)

url匹配过程:

image

注意:

  1. 匹配成功调用视图函数产生内容返回客户端,匹配失败产生404异常
  2. 不能在开始加反斜杠,推荐在结束加反斜杠
内置错误视图
404:找不到页面(请求的URL没有配置或者配置错误)
- 关闭调试模式之后,默认会显示一个标准的错误页面,如果要显示自定义的页面,则需要的templates目录下面自定义一个404.html文件
- 默认情况下Django会向404.html文件传递一个参数:request_path(请求的路径)

500:服务器端错误(视图函数内部执行出错)
- 默认会显示一个标准的500服务器错误页面,如果要显示自定义的页面,则需要的templates目录下面自定义一个500.html文件

一般情况下,在网站开发完毕后需要进行以下操作:修改项目配置文件

  • 关闭调试模式:DEBUG = False
  • 允许所有ip访问:ALLOWED_HOST=[ ‘*’]
URL参数捕获

如果我们要使用URL传递的参数就需要对URL中的参数进行捕获,具体操作:将目标值部分设置为一个正则表达式的分组

这样django框架就会自动把匹配成功后相应组的内容作为参数传递给对应的视图函数

1. 位置参数:直接使用分组()即可(一般适用于一个参数的传递)
2. 关键字参数:命名分组 r'?P<组名>xxx'
    注意:关键字参数,视图函数接收的参数名需要和分组的名字相同

2. HttpRequest对象和HttpResponse对象

2.1 HttpRequest对象

服务器接收到http协议的请求后,会根据报文创建HttpRequest对象,这个对象由Django框架自动创建,视图函数的第一个参数必须是HttpRequest对象。

视图函数必须接受一个参数request,其具体信息如下:

  • request是一个HttpRequest对象
  • request包含浏览器请求提交的信息

表单提交常用方式:

  • get:提交的参数在浏览器URL地址栏中可见(不安全)
  • post:提交的参数在请求体中,被简单加密(较安全)

注意:

  1. Django模板中表单post提交需要设置{% csrf_token %},不然会提交失败
  2. 或者把项目配置文件内 MIDDLEWARE_CLASSES项的csrf注释掉

HttpRequest对象相关属性:

1. path:字符串,表示请求的页面的完整路径,不包含域名和参数部分
2. method:字符串,表示请求使用的HTTP方法,常用值包括:'GET'、'POST'。
    - 在浏览器中给出地址发出请求采用get方式,如超链接。
    - 在浏览器中点击表单的提交按钮发起请求,如果表单的method设置为post则为post请求
3. encoding:字符串,表示提交的数据的编码方式。
    - 如果为None则表示使用浏览器的默认设置,一般为utf-8。
    - 此属性可修改,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值
4. GET:QueryDict类型对象,类似于字典,包含get请求方式的所有参数(使用标签的name属性作为键、查询字符串的键)
5. POST:QueryDict类型对象,类似于字典,包含post请求方式的所有参数
6. FILES:类似于字典的对象,包含所有的上传文件
7. COOKIES:标准的Python字典,包含所有的cookie,键和值都为字符串
8. session:既可读又可写的类似于字典的对象,表示当前的会话,只有当Django 启用会话支持时才可用,详细内容见"状态保持"

QueryDict对象

1. QueryDict对象使用django.http.QueryDict类定义,HttpRequest对象的GET、POST属性都是QueryDict类型的对象
2. 与python字典不同,QueryDict类型的对象可用来处理同一个键带有多个值的情况:
    - []或者get()方法:根据键获取值
        - 如果一个键同时拥有多个值将获取最后一个值
        - 如果键不存在则返回None值,可以设置默认值进行后续处理
    - getlist()方法:
        - 根据键获取值,多个值以列表返回,可以获取指定键的所有值
        - 如果键不存在则返回空列表[],可以设置默认值进行后续处理

GET属性

请求格式:请求地址结尾使用?,之后以"键=值"的格式拼接,多个键值对之间以&连接。

http://www.itcast.cn/?a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值