Views

Posted liushoudong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Views相关的知识,希望对你有一定的参考价值。

视图的功能

接受请求,进行处理,与M和T进行交互,返回应答

返回html内容HttpResponse,也可能重定向redirect

 

视图函数使用

定义视图函数:request参数必须有,是一个HttpRequest类型的对象。参数名可以变化,但不要更改

配置url:建立url和视图函数之间的对应关系

 

url配置的过程

在项目的urls文件中包含具体应用的urls文件,在具体应用的urls文件中包含具体url和视图的对应关系

url配置项是定义在一个名叫urlpatterns的列表中,其中的每一个元素就是一个配置项,每一个配置项都调用url函数

 

url匹配的过程

前面的域名和?后面的参数都不会参与匹配

 

错误视图

404:找不到页面,关闭调试模式之后,默认会显示一个标准的错误页面,如果要显示自定义的页面,则需要templates目录下面自定义一个404.html文件

1.url没有配置

2.url配置错误

500:服务器端的错误

视图出错

 

网站开发完成需要关闭调试模式,在settings.py文件文件中:

DEBUG=False

ALLOWED_HOST=[‘*‘]

 

捕获url参数

进行url匹配时,把所需要的捕获的部分设置成一个正则表达式组,这样django框架就会自动把匹配成功后相应组的内容作为参数传递给视图函数

1.位置参数:参数名可以任意指定

2.关键字参数:在位置参数的基础上给正则表达式组命名即可  

    ?P<组名>  关键字参数,视图中参数名必须和正则表达式组名一致

 

登录

request就是HttpResponse类型的对象,request包含浏览器请求的信息

request.POST 保存的是post方式提交的参数  QueryDict
request.GET 保存的是get方式提交的参数

QueryDict里面一个键可以对应多个值

技术图片

 技术图片

 

 

HttpRequest对象

服务器接收到http协议的请求后,会根据报文创建HttpRequest对象,这个对象不需要我们创建,直接使用服务器构造好的对象就可以。视图的第一个参数必须是HttpRequest对象,在django.http模块中定义了HttpRequest对象的API

属性

path:返回去除域名和参数的地址

method:返回请求方法

get:QueryDict类型对象,包含get请求方式的所有参数

post:QueryDict类型对象,包含post请求方式的所有参数

FILES:一个类似于字典的对象,包含所有的上传文件

COOKIES:一个标准的python字典,包含所有的cookie,键和值都为字符串

session:一个既可读又可写的类似于字典的对象

 

ajax请求

ajax:异步的javascript,在不重新加载页面的情况下,对页面进行局部的刷新

技术图片

 

 js,css,image都是静态文件

 

发出请求,不等待回调函数执行就往下走,异步

async:False,同步的ajax请求,发出请求后等待回调函数执行才能继续往下执行

 

ajax登录

不再通过表单提交请求,使用ajax

 

1.首先分析出请求地址时需要携带的参数

2.视图函数处理完成之后,所返回的json的格式

ajax请求在后台,不要返回页面或者重定向

 

cookie与session:状态保持

Cookie-->由服务器生成,存储在浏览器端的一小段文本信息

Cookie的特点:

1.以键值对方式进行存储

2.通过浏览器访问一个网站时,会将浏览器存储的跟网站相关的所有cookie信息发送给该网站的服务器  request.COOKIES

3.cookie是基于域名安全的

4.cookie是有过期时间的,如果不指定,默认关闭浏览器之后cookie就会过期

技术图片

 

 

 技术图片

 

 

Session

一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django启用会话的支持时才可用

 

Session存储在服务器端

特点:

以键值对进行存储

依赖于cookie

有过期时间,如果不指定,默认两周

技术图片

 

设置session:request.session[‘key’]=val

获取session:request.session.get(‘key‘)

清除session:删除值部分 request.session.clear()

清除session:删除整条数据 request.session.flush()

删除session中的指定键及值:del request.session[‘key‘]

设置会话的超时时间,如果没有指定过期时间则两个星期后过期:request.session.set_expiry(value)

 

以上是关于Views的主要内容,如果未能解决你的问题,请参考以下文章

按下锁定/主页按钮时的通知,单击返回选项卡片段时的通知

Laravel之视图和Blade模板引擎

为啥 Python 不使用对象 .save() 将我的模型保存到数据库?

如何在views.py中制作频道客户端?

微信小程序代码片段

VSCode自定义代码片段——CSS选择器