限制请求method
什么是method
1.通常客户端请求服务器获取资源为GET方式
2.客户端提交数据给服务器端数据为POST方式
method限制请求
如果要限制请求,比如客户端只允许用GET方式访问网站,其他的方式统统不允许,那么就可以如下:
require_http_methods()中可以传入访问方式,只可以用列表当中的访问方式访问,初次之外的方式都不允许访问;(require_GET,require_POST)也可以实现
from django.shortcuts import render,HttpResponse from django.views.decorators.http import require_http_methods,require_GET,require_POST # @require_http_methods(['POST']) @require_GET def index(request): return HttpResponse('ok')
重定向
重定向分为永久性重定向和临时性重定向,在页面上做一个访问的操作会调转到另一个网址
- 永久性重定向:http的状态码为301,多用于旧网址被废弃了要转到一个新的网址确保用户访问,最经典的就是京东网站,你输入www.jingdong.com,但是会跳转到www.jd.com这个网址,这种叫做永久性重定向
- 临时性重定向:http的状态码为302,表示页面的暂时性跳转,比如访问一个需要权限的网址,如果用户没有登录,那么应该重定向到登录页面,这种情况叫做临时性重定向,比如:www.zhihu.com
在django中,重定向使用reverse(to,*args,permanent=False,**kwargs)来实现的,to是一个url,permanent代表的是这个重定向是否是一个永久性重定向,默认是False,关于重定向的例子如下(临时性重定向):
from django.shortcuts import render,HttpResponse,reverse,redirect from django.views.decorators.http import require_http_methods,require_GET,require_POST require_http_methods(['POST','GET']) def index(request): username = request.GET.get('username') print(username) if username: return HttpResponse('首页') else: return redirect(reverse('register')) def register(request): return HttpResponse('注册页')
request对象常用方法
- is_secure():是否采用https协议
- is_ajax():是否采用ajax发送的请求,原理就是判断请求头中是否存在:X-Requested-With:XHLHttpRequest
- get_host():服务器的域名。如果在访问的时候还有端口,那么会加上端口号。比如:www.fengzi.com:8000
- get_full_path():返回完整的path。如果有查询字符串还会加上查询字符串,比如:/moive/bind/?username=fengzi
- get_raw_url():获取请求的完整url