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

 

posted @ 2022-04-04 18:07  西夏一品唐  阅读(1201)  评论(0编辑  收藏  举报