English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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和任何传入的参数编译视图的字符串。