重定向基本知识
#### HttpRequest请求对象(只读) - 当用户访问一个视图函数时,Django会创建一个request对象(HttpRequest) - HttpRequest对象中封装了所有的Http协议中的请求信息 #### 常见属性和方法 ``` HttpRequest.scheme:返回协议类型(http/https) HttpRequest.body:返回请求实体内容 HttpRequest.path:返回请求地址 HttpRequest.method:返回当前请求方式(GET/POST) HttpRequest.GET:返回当前请求参数的字典QueryDict HttpRequest.POST:返回当前请求参数的字典QueryDict HttpRequest.COOKIES:返回客户端所有的cookie信息 HttpRequest.FILES:获取上传文件(1.要求POST请求2.enctype="multipart/form-data) HttpRequest.META:返回请求报文信息 HttpRequest.get_host():返回请求主机名和端口号 HttpRequest.get_full_path():返回请求地址(包括请求参数)
302重定向
临时性重定向
301重定向
永久性重定向
相关代码
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^student/', include('student.urls')), url(r'^redirect/', include('redirect.urls')), ]
urlpatterns = { url(r'^r1/', views.r1_view), url(r'^r2/', views.r2_view), }
# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.http import HttpResponse from django.shortcuts import render # Create your views here. def r1_view(request): # 方式1:302 # return HttpResponseRedirect('/redirect/r2/') # 方式2:默认302可以转换成301 # return redirect('/redirect/r2/',permanent='True') # 方式3: response = HttpResponse() response.status_code = 302 response.setdefault('Location', '/redirect/r2/') return response def r2_view(request): return HttpResponse('hello3')
定制错误页面
http://127.0.0.1:8000/redirect/r3/
上面的浏览器请求是有对应的处理视图的,但是处理视图中的showUser.html不存在,那么就应该报服务器端的错误500;
http://127.0.0.1:8000/redirect/sdfsfsefw
上面的浏览器请求是没有对应的处理视图的,所以一请求就应该报404错误的,这个时候我们应该跳转404错误定制页面的;
相关代码
#1.在settings文件中修改 DEBUG = False ALLOWED_HOSTS = ['*'] #2.在templates目录中创建404.html/500.html
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^student/', include('student.urls')), url(r'^redirect/', include('redirect.urls')), ]
urlpatterns = { url(r'^r1/', views.r1_view), url(r'^r2/', views.r2_view), url(r'^r3/', views.resp500_view), }
# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.http import HttpResponse from django.shortcuts import render, redirect # Create your views here. def r1_view(request): # 方式1:302 # return HttpResponseRedirect('/redirect/r2/') # 方式2:默认302可以转换成301 # return redirect('/redirect/r2/',permanent='True') # 方式3: response = HttpResponse() response.status_code = 302 response.setdefault('Location', '/redirect/r2/') return response def r2_view(request): return HttpResponse('hello3') # 转发到未定义的页面上去,那么自动跳转500.html中 def resp500_view(request): return redirect('showUser.html')
相关的html页面代码
over......
备案号:湘ICP备19000029号
Copyright © 2018-2019 javaxl晓码阁 版权所有