Django笔记-5-视图
2019独角兽企业重金招聘Python工程师标准>>>
Django笔记-5-视图
概述
作用
视图接受web请求, 并相应web请求;
本质
视图就是一个Python中的函数
相应
- 网页
- 重定向
- 错误视图
- 404
- 500
- ...
- Json数据
- 过程: 用户输入网址→Django解析网址→(获得访问字段)→匹配urls→(获得视图函数)→视图通过模板渲染数据→返回给浏览器
url配置
配置流程
制定根URL配置文件
在project文件夹下, seetings.py文件夹下
ROOT_URLCONF=‘project.urls’
urlpatterns
一个url实例的列表
url对象
- 正则表达式
- 视图名称
- 名称
url匹配正则表达式的注意事项
- 如果想要从url中获取一个值, 需要对正则加小括号
- 匹配正则前方不需要增加反斜杠
- 正则前需要加r表示字符串不转义
引入其他url配置
在应用中创建urls.py文件, 定义此应用的url方法, 在主项目文件urls.py中使用include()方法引入;
URL的反向解析
概述
如果在视图/模板中使用了硬编码链接, 在url配置发生改变时,动态生成链接的地址全部需要更改
解决
在使用链接时, 通过url配置的名称,动态生成url地址
作用
使用url模板
示例:
# project/urls.py url(r'^', include('app.urls', namespace="app"))
# app/urls.py url(r'^good/(\d+)/$)', views.good, name='good'
# index.html <a href="/good/1/">硬编码链接</a> <a href="{% url 'app:good ' 1 %}">反向解析链接</a>
视图函数
定义视图
本质: 一个函数
视图参数:
- request:一个HttpRequest的实例
- 通过正则表达式获取的参数
位置
一般在views.py文件下定义
错误视图
404视图:找不到网页时返回错误
在templates目录下定义404.html
配置settings.py
DEBUG=False
ALLOWED_HOST=[‘*’] # 允许任何人访问 ```
500视图:在视图代码中出现错误
400视图:用户的操作出现错误
HttpRequest 对象
概述
服务器接收http请求后, 会根据报文创建HttpResponse对象;
视图的第一个参数就是HttpResponse对象
Django创建的, 之后调用视图时传递的视图
属性
- path: 请求的完整路径, 不包括域名和端口;
- method: 表示请求的方式, 常用的有GET/POST;
- encoding: 表示浏览器提交的数据的编码方式;(一般为UTF-8);
- GET: 类似与字典的对象,包含了GET请求的所有参数;
- POST: 类似与字典的对象,包含了POST请求的所有参数;
- FILES: 类似与字典的对象,包含了所有上传的额文件;
- COOKIES: 字典对象, 包含所有cookie;
- session: 类似字典的对象,表示当前会话;
方法
is_ajax(): 如果是通过XMLHttpRequest发起的, 返回True
QueryDict对象
request对象中的GET/POST都属于QueryDict对象;
方法
get()
作用: 根据键获取值, 仅一个值
getlist()
将键的值以列表的形式返回, 可以获取多个值
GET属性
目的: 获取浏览器传递给服务器的数据
POST属性
使用表单提交POST请求
关闭CSRF
HttpResponse对象
概述
作用: 给浏览器返回数据;
HttpRequest对象是由django创建的, HttpResponse对象是由程序员创建
用法
不调用模板,直接返回数据
调用模板
使用render方法
原型
render(request, templateName, {context})
作用
结合数据和模板, 返回完成的HTML页面
参数
request
templateName
context
示例
def students(request):student_list = Student.objects.all()return render(request, 'app/students.html',{"students": student_list})
属性
content: 返回内容
charset: 返回数据的编码格式
status_code: 响应状态
200/304/404...
content-type: 指定输出的MIME类型
方法
init
使用页面内容实例化HttpResponse对象
write(content)
以文件的形式写入
flush()
以文件的形式输出缓冲区
set_cookie(key, value=‘’, max_Age=None, exprise=None)
设置cookies
delete_cookie(key)
删除cookie
注意:
如果删除一个不存在的cookie , 那么什么都不会发生.
子类HttpResponseRedirect
功能
重定向: 服务器端的跳转
简写: redirect()
to 推荐使用反向解析
子类JsonResponse
返回json数据, 一般用于异步请求(ajax)
__init__ :(self, data)
data: 字典对象
注意: content-type类型为application/json
Session状态保持
概述
http协议是无状态的, 每次请求都是一次新的请求, 不记住之前请求.
客户端与服务器端的一次通信就是一次会话
为实现状态的保持, 在客户端或服务端存储会话的数据
存储方式有cookie和session
- cookie: 所有数据都存储在客户端, 不要存敏感数据(不安全,数据量小)
- session: 所有数据存储在服务端, 在客户端用cookie存储session_id
目的
在一段时间内跟踪请求者的状态, 可以实现跨页面访问当前的请求者数据
注意
不同的请求者不共享此数据, 与请求者一一对应.
启用session
settings.py中
INSTALLED_APPS中默认启用
MIDDLEWARE中默认启用
使用session
启用session后, 每个HttpRequest对象都有一个session属性,就是一个类似字典的对象;
get(key, default=None): 根据键获取session值
clear(): 清空所有的会话
flush(): 删除当前的会话和cookie
设置过期时间:set_expiry(value)
如果不设置,两个星期后过期;
value是整数:例如10,表示10秒钟;
存储session的位置
- 数据库: 默认存储在 数据库中;
- 缓存: 只存储在本地内存中, 如果丢失不能找回,比数据库快;
- 数据库和缓存: 优先从本地缓存中读取, 读取不到再去数据库中获取
使用redis存储session
- pip install django-redis-session
看老师犯了个错误的心得: 每个代码都很重要.
转载于:https://my.oschina.net/frank1126/blog/3055816
Django笔记-5-视图相关推荐
- Django 笔记4 -- 模板
Django 笔记4 – 模板 Django 系列笔记是笔者学习.实践使用 Django 的相关笔记,大量参考了知了课堂的<Django零基础到项目实战>教程. 参考文档: Django官 ...
- Django 笔记3 -- URL
Django 笔记3 – URL Django 系列笔记是笔者学习.实践使用 Django 的相关笔记,大量参考了知了课堂的<Django零基础到项目实战>教程. 参考文档: Django ...
- Django 笔记2 -- Django 项目
Django 笔记2 – Django 入门 Django 系列笔记是笔者学习.实践使用 Django 的相关笔记,大量参考了知了课堂的<Django零基础到项目实战>教程. 参考文档: ...
- Django笔记-实现用户退出登录(logout)
Django笔记-实现用户的登出 Django logout()方法介绍: 一.登录login(user,request): 将通过认证的用户的唯一标识信息(主键id),通过哈希加密写入到当前sess ...
- Django笔记总结
1.web框架的本质 web通信流程 web我们这里指的就是通过浏览器去访问服务端,请求页面或者数据的通信方式,属于B/S架构.就是我们常见的网站.浏览器与服务端的通信流程:浏览器客户端发送一个请求信 ...
- Django整理(二) - 视图和模板的初步使用
Django中的视图 · Django使用视图来编写web应用的业务逻辑 · Django的视图也就是一个函数,可称为视图函数 · 视图定义在应用的view.py文件中 · 视图需要绑定一个URL地址 ...
- Django 笔记6 -- 多表查询
Django 笔记6 – 多表查询 Django 系列笔记是笔者学习.实践使用 Django 的相关笔记,大量参考了知了课堂的<Django零基础到项目实战>教程. 参考文档: Djang ...
- Django 笔记5 -- 数据库
Django 笔记5 – 数据库 Django 系列笔记是笔者学习.实践使用 Django 的相关笔记,大量参考了知了课堂的<Django零基础到项目实战>教程. 参考文档: Django ...
- Django 笔记1 -- 环境搭建
Django 笔记1 – 环境搭建 Django 系列笔记是笔者学习.实践使用 Django 的相关笔记,大量参考了知了课堂的<Django零基础到项目实战>教程. 参考文档: Djang ...
最新文章
- python基础代码事例-Python基础总结成千行代码,让Python入门更简单!
- 机器学习导论(张志华):正定核性质
- frida 安装特定版本
- 中芯国际:与阿斯麦集团签订购买单 总价12亿美元
- 【git】源代码管理工具 GIT的使用步骤的详细讲解
- c语言影碟租借管理系统,影碟出租信息管理系统
- 190328文件处理
- FindTask练习
- Leetcode力扣 MySQL数据库 1384 按年度列出销售总额
- Python练习题——快乐数字
- APIMonitor安装
- SwiftUI中微信认证成功但App回调方法未被调用的解决
- Spring全家桶--Spring5
- 利用python对b站某GPT-4解说视频的近万条弹幕进行爬取、数据挖掘、数据分析、弹幕数量预测及情绪分类
- QTextStream 类(文本流)和 QDataStream 类(数据流)
- tcp socket 和 socket文件
- Python绘制MACD指标图
- 【TARS】TarsCpp-Http服务示例
- Ice自学第一步——Windows下安装Ice和设置Ice的环境变量
- SCI 文章被拒是一种怎样的体验? - 易智编译EaseEditing