限制请求method
GET请求:向服务器索取数据,不会向服务器提交数据,对服务器状态不会造成更改。
POST请求:向服务器提交数据,会对服务器的状态造成更改,比如向服务器提交一篇文章。(如method=‘submit’)
django内置请求装饰器:
1.django.http.decorators.http.require_http_methods:这个装饰器需要传递一个允许访问的方法列表(GET或者POST请求都可以,在@require_http_methods([])的中括号里写指定请求方法)
from django.views.decorators.http import require_http_methods @require_http_methods(["POST"])#在下个函数中使用post请求 def index(request): pass
2.django.views.decorators.http.require_GET:只能使用GET请求
from django.views.decorators.http import require_GET @require_GET #在下个视图函数中使用GET请求 def my_view(request): pass
3.django.views.decotators.http.require_POST:只能使用POST请求
from django.views.decorators.http import require_POST @require_POST def index(request): pass
4.django.views.decorators.http.require_safe:只能使用相对安全的方式来访问[GET和HEAD请求]因为只有这两种请求不会对服务起产生增删改的行为。
from django.views.decorators.http import require_safe @require_safe def index(request): pass
页面重定向
重定向分为永久重定向和暂时性重定向
- 永久性重定向:http状态码为301 即网址的转换,如京东网站:输入www.jingdong.com你会发现上面的网址会自动转换为www.JD.com当访问的还是同一个网站。
- 暂时性重定向:http状态码为302 即页面的暂时跳转,如知乎网 进入后会先跳转到登录页面,登录后才能继续访问首页。(跳转的过程就是暂时重定向)
from django.shortcuts import render,redirect,reverse from django.http import HttpResponse def index(request): #如果没有登陆,就重定向到注册页面 #如果再url中,传递了username这个参数,那么就认为是登陆了,否则就没有登陆 #传参的方式: /?username=xxx username = request.GET.get(‘username‘) if username: return HttpResponse(‘首页‘) else: return redirect(reverse(‘signup‘)) def signup(request): return HttpResponse(‘首页‘)
注:在重定向的时候直接给出另一个页面的模板,不是直接跳转。