django 路由详解(五)路由重定向
路由重定向
首先说一下什么是重定向?在浏览器访问某个网页的时候,这个网页不提供响应内容,而是自动跳转到其他网页,由其他网页来生成响应内容。
在django的重定向有两种方式:第一种方式是路由重定向;第二种方式是自定义视图的重定向。路由重定向是使用djanog内置的视图类RedirectView实现的,默认支持http的get请求;自定义视图的响应状态设置重定向,能根据开发需求自行定义。
在myApp的urls.py中,引入RedirectView视图类,然后通过as_view()方法将视图进行实例化,参数url用于设置跳转的路由地址。如下:
#myApp urls.py from operator import index from django.urls import path,re_path from . import views from django.views.generic import RedirectView urlpatterns = [ path("<year>/<int:month>/<slug:day>",views.mydate,name="mydate"), path("index",views.index,name="index"), #设置路由当访问index路由时,跳转到当前页面 path("goToPage",RedirectView.as_view(url="index"),name="goToPage") ]
在myApp应用下views.py视图引入redirect函数实现网页重定向。如下:
from django.shortcuts import render from django.http import HttpResponse from django.shortcuts import reverse from django.urls import resolve from django.shortcuts import redirect # Create your views here. def mydate(request,year,month,day): return HttpResponse(str(year)+"-"+str(month)+"-"+str(day)) def index(request): kwargs = {"year":2022,"month":4,"day":10} args = ["2022","04","03"] #使用redirect将页面重定向到新生成的地址 return redirect(reverse("myApp:mydate",args=args))
在浏览器中访问:http://127.0.0.1:8000/goToPage,页面就会重定向到index路由地址。