重定向基本知识
#### 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晓码阁 版权所有