Django 视图

Created
Sep 6, 2023 03:11 AM
Date
Jan 1, 2021

1. 视图的功能

接收请求,进行处理,与M和T进行交互,返回应答。
返回html内容 HttpResponse,也可能重定向 redirect,还可以返回json数据。

2. 视图函数使用

2.1 使用

  1. 定义视图函数 request参数必须有。是一个HttpRequest类型的对象。参数名可以变化, 但不要更改。
  1. 配置url 建立url和视图函数之间的对应关系。

3. url配置的过程

  1. 在项目的urls文件中包含具体应用的urls文件,在具体应用的urls文件中包含具体url和视图的对应关系。
  1. url配置项是定义在一个名叫urlpatterns的列表中,其中的每一个元素就是一个配置项,每一个配置项都调用url函数。

4. url匹配的过程

notion image
  1. 去除域名和后面的参数,剩下/aindex,再把前面的/去掉,剩下aindex
  1. 拿aindex先到项目的url.py文件中进行从上到下的匹配,匹配成功之后执行后面对应的处理动作,就是把匹配成功的部分a字符去除,然后拿剩下的部分index到应用的urls.py文件中再进行从上到下的匹配。
  1. 如果匹配成功则调用相应的视图产生内容返回给客户端。如果匹配失败则产生404错误。

4. 错误视图

404:找不到页面,关闭调试模式之后,默认会显示一个标准的错误页面,如果要显示自定义的页面,则需要的templates目录下面自定义一个404.html文件。
  1. url没有配置
  1. url配置错误
500: 服务器端的错误。
  1. 视图出错
网站开发完成需要关闭调试模式,在settings.py文件中:
DEBUG=False
ALLOWED_HOST=[ ‘*’]

5. 捕获url参数

进行url匹配时,把所需要的捕获的部分设置成一个正则表达式组,这样django框架就会自动把匹配成功后相应组的内容作为参数传递给视图函数。
  1. 位置参数 位置参数,参数名可以随意指定
  1. 关键字参数:在位置参数的基础上给正则表达式组命名即可。 ?P<组名> 关键字参数,视图中参数名必须和正则表达式组名一致.

6. 普通登录案例

6.1显示出登录页面

  1. 设计url,通过浏览器访问 http://127.0.0.1:8000/login 时显示登录页面
  1. 设计url对应的视图函数login。
  1. 编写模板文件login.html。

6.2 登录校验功能

  1. 设计url,点击登录页的登录按钮发起请求 http://127.0.0.1:8000/login_check时进行登录校验。
  1. 设计url对应的视图函数login_check。 接收表单提交过来的数据。 进行登录校验,若用户名密码正确则跳转到登录成功页。若失败在跳转到登录页面。
  1. 登录成功后跳转到首页。

7. Ajax

7.1 基本概念

异步的javascript。在不全部加载某一个页面部的情况下,对页面进行局的刷新,ajax请求都在后台。
图片,css文件,js文件都是静态文件。
  1. 发起ajax请求:jquery发起
  1. 执行相应的视图函数,返回json内容
  1. 执行相应的回调函数。通过判断json内容,进行相应处理。

7.2 Ajax登录案例

  1. 首先分析出请求地址时需要携带的参数。
  1. 视图函数处理完成之后,所返回的json的格式。
显示出登录页面
  1. 设计url,通过浏览器访问 *http://127.0.0.1:8000/login_ajax** 时显示登录页面
  1. 设计url对应的视图函数login_ajax。
  1. 编写模板文件login_ajax.html。
def login_ajax(request): returnrender(request,'booktest/login_ajax.html')
  1. 登录校验功能
  1. 设计url,点击登录页的登录按钮发起请求http://127.0.0.1:8000/login_ajax_check 时进行登录校验。
  1. 设计url对应的视图函数login_ajax_check。 接收post提交过来的数据。 进行登录校验,并返回json内容。 JsonRepsone Json格式如下:
{‘res’:‘1’} #表示登录成功 {‘res’:‘0’} #表示登录失败

8. 状态保持

http协议是无状态的。下一次去访问一个页面时并不知道上一次对这个页面做了什么。

8.1 Cookie

cookie是由服务器生成,存储在浏览器端的一小段文本信息。
cookie的特点:
  1. 以键值对方式进行存储。
  1. 通过浏览器访问一个网站时,会将浏览器存储的跟网站相关的所有cookie信息发送给该网站的服务器。request.COOKIES
  1. cookie是基于域名安全的。www.baidu.com
  1. cookie是有过期时间的,如果不指定,默认关闭浏览器之后cookie就会过期。
记住用户名案例:

8.2 Session

session存储在服务器端。
session的特点:
  1. session是以键值对进行存储的。
  1. session依赖于cookie。唯一的标识码保存在sessionid cookie中。
  1. session也是有过期时间,如果不指定,默认两周就会过期。
记住用户登录状态案例。

8.3 cookie和session的应用场景

cookie:记住用户名。安全性要求不高。
session:涉及到安全性要求比较高的数据。银行卡账户,密码
notion image
notion image
notion image