视图
D:即一个python函数,也可以叫做视图函数,
每一个用户请求都对应一个视图函数(和url地址)
E: 接受并处理请求,调用模板和模型,响应请求
U:定义视图函数
from django.http import HttpResponsedef index(request): -----必须有一个参数request ----- 处理主页的逻辑代码 return HttpResponse("Hello Python") -----处理完请求,返回字符串内容给浏览器显示
配置URL
E:建立url地址和视图函数的对应关系,当用户请求某个url地址时,让django能找到对应的视图函数进行处理
U:在项目中配置urls.py
urlpatterns = [ url(r'^', include('app01.urls')), ---------指向应用下的urls文件,匹配成功,进入应用下urls]
在应用下创建urls,py,配置
urlpatterns = [ url(r'^index$', views.index), ----------指向views下的视图函数,匹配成功即调用视图函数]
捕获URL中的值
E:当url中有值时,我们可以通过正则表达式的分组来对应视图函数的位置参数或者关键字参数
U:
①位置参数传值
url匹配:url(r'^show_news/(\d+)/(\d+)$', views.show_news),
视图函数:def show_news(request, a, b): return HttpResponse("新闻界面:%s %s" % (a, b))
②关键字参数传值
url匹配:url(r'^show_news2/(?P<category>\d+)/(?P<page_no>\d+)$', views.show_news2)
视图函数:def show_news2(request, category, page_no): return HttpResponse("新闻界面:%s %s" % (category, page_no))
错误视图
404错误:page_not_found 视图 (找不到界面)
500错误:server_error 视图 (服务器内部错误)
403错误:permission_denied 视图 (权限拒绝)
HttpRequest对象
D:当请求一个页面时,Django会把请求数据包装成一个HttpRequest对象,然后调用对应的视图函数把这个对象作为第一个参数传给视图函数,即request
U:HttpRequest对象的一些属性
属性
| 返回值
| 描述
| path
| 一个字符串,请求页面的全路径
| 不包括域名端口参数,如“/index”
| method
| 一个全大写的字符串,表示请求中使用的HTTP方法
| 常用值:‘GET’, 'POST'。
| encoding
| 一个字符串,表示提交的数据的编码方式
| 默认:utf-8
| GET
| 类似字典的QueryDict对象
| 包含get请求的所有参数
| POST
| 类似字典的QueryDict对象
| 包含post请求的所有参数
| COOKIES
| 一个标准的python字典
| 包含所有的cookies, 键和值都是字符串
| session
| 可读可写的类似字典的对象
| 默认:开启,用来保存session数据
| FILES
| 类似字典的对象
| 包含所有的上传文件
|
QueryDict对象
D:HttpRequest对象的 属性 GET、POST ,类似字典,但同一个键可以有多个值
U:dict.get(“键”,默认值)根据键获取值,如果一个键同时拥有多个值将获取最后一个值,键不存在则返回None,也可以指定默认值
GET属性
D:当浏览器选择GET方式传递请求参数时,调用GET属性获取浏览器提交的数据内容
U:方法:get(“键”)获取 键的值,如果多个值则获取最后一个
getlist("键")获取该键所有的值,返回一个列表
POST属性
D:当浏览器向服务器提交数据时,调用POST属性获取浏览器提交的数据内容,一般用于表单提交。
U:方法get(“一般表单name属性对应的值”)获取表单内用户填写的数据。
HttpResponse对象
D:视图函数处理完逻辑后,必须返回一个HttpResponse对象或子对象作为响应
三种类型:
①HttpResponse对象 (render 函数)
D:返回一个HTML页面,render函数可渲染动态页面
U:HttpResponse参数是一个字符串,render参数是request,html文件,[字典形式的数据]
②HttpResponseRedirect对象 (redirect 函数)
D:不给浏览器返回一个HTML页面,而是让浏览器再次访问其他的网址
U:redirect参数是一个url,指向访问的网址。
③JsonResponse对象
D:给客户端返回JSON格式的数据(实现网页局部刷新(ajax))
U:参数是一个字典类型的数据,网页content-type 为 application/json
JSON
D:一种轻量级的数据交换格式,不是一种语言
两种表示结构:
①对象结构
{ "键名1":值1, "键名2":值2, "键名n":值n}
②数组结构
[ { "键名1":值1,"键名2":值2 }, { "键名3":值3, "键名4":值4 }, …… ]
AJAX(Asynchronous JavaScript and XML 异步)
D:一种发送http请求与后台进行异步通讯的技术
E:在不重载整个网页的情况下,AJAX从后台加载数据,并在网页上进行局部刷新
U:根据请求方式不同分为以下两种情况:
①通过 HTTP GET 请求从服务器上请求数据:$.get(请求地址, 回调函数);
②通过 HTTP POST 请求从服务器上请求数据:$.post(请求地址, 请求参数, 回调函数);
Cookie
D:①Cookie是由服务器生成的,存储在浏览器端的少量数据(键值对)
②服务器生成Cookie后,会在响应请求时发送Cookie数据给浏览器,浏览器接收到后会自动保存
③浏览器再次请求服务器时,会自动上传该服务器生成的所有的Cookie
④Cookie是有过期时间的,默认关闭浏览器之后Cookie就会过期
E:当浏览器访问服务器时,可以保存客户的一些数据存入作为数据以便逻辑处理
案例:保存登录用户名和浏览过的商品
U:保存数据:response.set_cookie('键名', count,max_age, expires)
-----------max_age:超过这个秒数会过期,expires:指定日期/时间过期
Session
D:当一些敏感重要的数据,不应该保存在浏览器时,可以使用Session保存数据在服务器的数据库表中,Session的使用依赖于Cookie,
Session也是有过期时间的,如果不指定,默认两周就会过期
流程:
①浏览器首次访问服务器,服务器保存session数据,生成浏览器唯一标识abc,保存abc和session数据到数据库表,生成sessionid
②服务器响应浏览器,返回sessionid=abc
③浏览器保存cookie数据
④当浏览器再次请求服务器,自动上传该服务器cookie数据给服务端。
⑤服务器得到浏览器的标识abc,从表中查出session数据,并封装到request。session字典中
U:session对象操作:
保存session数据:request.session[“键”] = 值
读取session数据:request.session.get("键",默认值)
清除session数据:request.session.clear() ----删除表中记录 或者:request.session.flush() --------删除整个表
删除指定键值对数据:del request.session['键']
设置过期时间:request.session.set_expiry(value) ---value为整数,指过多少秒过期;
value为0,指浏览器关闭过期;value为None,指永不过期;
|
|