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路由地址。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM