English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Django 页面重定向

Page redirection is necessary for many reasons in web applications. You may want to redirect users to another page when a specific action occurs or in the event of an error. For example, when a user logs into a website, they are often redirected to their homepage or personal dashboard. In Django, redirection is achieved using the 'redirect' method.

Im "redirect"-Methodenaufruf muss als Parameter der Name der Ansicht und der String der URL, zu der umgeleitet werden soll, angegeben werden.

myapp/views bis jetzt sehen so aus −

# Filename: example.py
# Copyright : 2020 By w3codebox
# Author by: de.oldtoolbag.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 = "Artikel von: %s"/%s"%(year, month)
    return HttpResponse(text)

Lassen Sie uns hello ändern, um auf djangoproject.com umzuleiten, sowie viewArticle um auf unsere interne '/myapp/articles' myapp/view.py wird wie folgt geändert: 

# Filename: example.py
# Copyright : 2020 By w3codebox
# Author by: de.oldtoolbag.com
# Date : 2020-08-08
from django.shortcuts import render, redirect
 from django.http import HttpResponse
 import datetime
 # Erstellen Sie hier Ihre Ansichten.
 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 = "Artikel von: %s"/%s"%(year, month)
    return HttpResponse(text)

Im obigen Beispiel importieren wir zunächst die Umleitung (redirect) aus Django. Kurzweg und leiten um zu der offiziellen Django-Website weiter, wir müssen nur die vollständige URL zur "redirect"-Methode als String verwenden, im zweiten Beispiel (im ViewArticle-View) die Methodenname und seine Parameter als Parameter der "redirect"-Methode verwenden.

Besuchen/myapp/hello, zeigt den folgenden Bildschirm an-

und greift darauf zu /myapp/article/42Gibt den folgenden Bildschirm aus-

Man kann auch angeben, ob "redirect" temporär oder dauerhaft ist, indem der Parameter permanent = True hinzugefügt wird. Der Benutzer wird keine Unterschiede bemerken, aber dies sind Details, die von Suchmaschinen bei der Rangfolge der Websites berücksichtigt werden.

Wir definieren den "name"-Parameter in url.py, wenn wir URL-Mappings durchführen.

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

该名称(这里的文章)可以被用作“redirect”方法的实参,那么 viewArticle 重定向可以修改 -

# Filename: example.py
# Copyright : 2020 By w3codebox
# Author by: de.oldtoolbag.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 w3codebox
# Author by: de.oldtoolbag.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")

 - 还有一个函数生成 URL;它是以相同的方式重定向;“reverse”方法(django.core.urlresolvers.reverse)。这个函数不返回HttpResponseRedirect对象,而仅仅包含URL和任何传入的参数编译视图的字符串。