路由重定向
首先說一下什么是重定向?在瀏覽器訪問某個網頁的時候,這個網頁不提供響應內容,而是自動跳轉到其他網頁,由其他網頁來生成響應內容。
在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路由地址。