Django - Seitenumleitung

Die Seitenumleitung ist in Webanwendungen aus vielen Gründen erforderlich. Möglicherweise möchten Sie einen Benutzer auf eine andere Seite umleiten, wenn eine bestimmte Aktion ausgeführt wird oder im Grunde genommen im Fehlerfall. Wenn sich ein Benutzer beispielsweise bei Ihrer Website anmeldet, wird er häufig entweder zur Hauptstartseite oder zu seinem persönlichen Dashboard weitergeleitet. In Django erfolgt die Umleitung mithilfe der Umleitungsmethode.

Die 'Redirect'-Methode verwendet als Argument: Die URL, zu der Sie als Name einer Ansicht der Zeichenfolge A umgeleitet werden möchten.

Die myapp / views sieht bisher wie folgt aus -

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)

Lassen Sie uns die Hallo-Ansicht ändern, um zu djangoproject.com umzuleiten, und unseren viewArticle, um zu unserem internen '/ myapp / articles' umzuleiten. Dazu ändert sich myapp / view.py in -

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)

Im obigen Beispiel haben wir zuerst die Umleitung von django.shortcuts importiert und zur Umleitung zur offiziellen Django-Website einfach die vollständige URL als Zeichenfolge an die 'redirect'-Methode übergeben und für das zweite Beispiel (die viewArticle-Ansicht) die' redirect '. Die Methode verwendet den Ansichtsnamen und seine Parameter als Argumente.

Wenn Sie auf / myapp / hello zugreifen, wird der folgende Bildschirm angezeigt:

Wenn Sie auf / myapp / article / 42 zugreifen, wird der folgende Bildschirm angezeigt:

Sie können auch angeben, ob die Umleitung temporär oder permanent ist, indem Sie den Parameter permanent = True hinzufügen. Der Benutzer wird keinen Unterschied sehen, aber dies sind Details, die Suchmaschinen beim Ranking Ihrer Website berücksichtigen.

Denken Sie auch an den Parameter 'name', den wir in unserer URL.py definiert haben, während Sie die URLs zuordnen.

url(r'^articles/(?P\d{2})/(?P\d{4})/', 'viewArticles', name = 'articles'),

Dieser Name (hier Artikel) kann als Argument für die 'Redirect'-Methode verwendet werden, dann kann unsere viewArticle-Umleitung von - geändert werden

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")

To - -

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")

Note- Es gibt auch eine Funktion zum Generieren von URLs. Es wird auf die gleiche Weise wie die Umleitung verwendet. die 'umgekehrte' Methode (django.core.urlresolvers.reverse). Diese Funktion gibt kein HttpResponseRedirect-Objekt zurück, sondern lediglich eine Zeichenfolge, die die URL zu der Ansicht enthält, die mit einem übergebenen Argument kompiliert wurde.