Django 頁(yè)面重定向

頁(yè)面重定向在Web應(yīng)用程序有很多原因是必要的。您可能希望將用戶重定向到另一個(gè)頁(yè)面,當(dāng)一個(gè)特定的動(dòng)作發(fā)生,或者有錯(cuò)誤的情況下。例如,當(dāng)用戶登錄網(wǎng)站,他經(jīng)常被重定向到他的主頁(yè)或個(gè)人的儀表板。在Django中,定向使用“redirect”的方法來(lái)實(shí)現(xiàn)。

在“redirect”方法需要作為參數(shù):URL要被重定向到的字符串的視圖名字。

myapp/views 到現(xiàn)在為止如下所示 ?

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
def hello(request):
    today = datetime.datetime.now().date()
    daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    return render(request, "hello.html", {"today" : today, "days_of_week" : daysOfWeek})
 
 def viewArticle(request, articleId):
    """ A view that display an article based on his ID"""
    text = "Displaying article Number : %s" %articleId
    return HttpResponse(text)
 
 def viewArticles(request, year, month):
    text = "Displaying articles of : %s/%s"%(year, month)
    return HttpResponse(text)

讓我們修改hello,以重定向到 djangoproject.com ,以及 viewArticle 重定向到我們內(nèi)部的 '/myapp/articles'。myapp/view.py將修改為如下: 

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
from django.shortcuts import render, redirect
 from django.http import HttpResponse
 import datetime
 # Create your views here.
 def hello(request):
    today = datetime.datetime.now().date()
    daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    return redirect("https://www.djangoproject.com")
 
 def viewArticle(request, articleId):
    """ A view that display an article based on his ID"""
    text = "Displaying article Number : %s" %articleId
    return redirect(viewArticles, year = "2045", month = "02")
 
 def viewArticles(request, year, month):
    text = "Displaying articles of : %s/%s"%(year, month)
    return HttpResponse(text)

在上面的實(shí)例中,我們首先從Django導(dǎo)入重定向(redirect)??旖莘绞讲⒅囟ㄏ虻紻jango的官方網(wǎng)站上,我們只需使用完整URL到“redirect”方法作為字符串,在第二實(shí)例(在viewArticle視圖)'redirect'方法取視圖名字和它的參數(shù)作為參數(shù)。

訪問(wèn)/myapp/hello,會(huì)顯示如下的屏幕- 瀏覽器運(yùn)行結(jié)果

并訪問(wèn) /myapp/article/42,會(huì)給出下面的屏幕- 瀏覽器運(yùn)行結(jié)果

也可以指定“redirect”是否是暫時(shí)的還是永久性的,加入permanent = True參數(shù)。用戶看到不會(huì)有什么區(qū)別,但這些都是細(xì)節(jié),搜索引擎網(wǎng)站排名時(shí)考慮到。

我們?cè)趗rl.py定義“name”參數(shù)在映射URL時(shí)?

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
url(r'^articles/(?P\d{2})/(?P\d{4})/', 'viewArticles', name = 'articles'),

該名稱(這里的文章)可以被用作“redirect”方法的實(shí)參,那么 viewArticle 重定向可以修改 -

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
def viewArticle(request, articleId):
    """ A view that display an article based on his ID"""
    text = "Displaying article Number : %s" %articleId
    return redirect(viewArticles, year = "2045", month = "02")

修改為 ?

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.com
# Date : 2020-08-08
def viewArticle(request, articleId):
    """ A view that display an article based on his ID"""
    text = "Displaying article Number : %s" %articleId
    return redirect(articles, year = "2045", month = "02")

 - 還有一個(gè)函數(shù)生成 URL; 它是用在相同的方式重定向; “reverse”方法(django.core.urlresolvers.reverse)。這個(gè)函數(shù)不返回HttpResponseRedirect對(duì)象,而僅僅包含URL和任何傳入的參數(shù)編譯視圖的字符串。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清