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

Django 页面重定向

Il y a de nombreuses raisons nécessaires pour la redirection de page dans les applications Web. Vous pourriez vouloir rediriger l'utilisateur vers une autre page lorsqu'une action spécifique se produit ou en cas d'erreur. Par exemple, lorsque l'utilisateur se connecte au site Web, il est souvent redirigé vers sa page d'accueil ou son tableau de bord personnel. En Django, la redirection est réalisée par la méthode "redirect".

Dans la méthode "redirect", le nom de la vue doit être fourni en tant que paramètre : la chaîne de caractères de l'URL à rediriger.

myapp/Les vues jusqu'à présent sont les suivantes −

# Fichier : example.py
# Copyright : 2020 By w3codebox
# Auteur par : fr.oldtoolbag.com
# Date : 2020-08-08
def hello(request):
    today = datetime.datetime.now().date()
    daysOfWeek = ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim']
    return render(request, "hello.html", {"today" : today, "days_of_week" : daysOfWeek})
 
 def viewArticle(request, articleId):
    """ Une vue qui affiche un article basé sur son ID """
    text = "Affichage de l'article Numéro : %s" %articleId
    return HttpResponse(text)
 
 def viewArticles(request, year, month):
    text = "Affichage des articles de : %s"/%s"%(year, month)
    return HttpResponse(text)

Modifions hello pour rediriger vers djangoproject.com, ainsi que viewArticle pour rediriger vers notre interne '/myapp/articles' dans myapp/view.py sera modifié comme suit : 

# Fichier : example.py
# Copyright : 2020 By w3codebox
# Auteur par : fr.oldtoolbag.com
# Date : 2020-08-08
from django.shortcuts import render, redirect
 from django.http import HttpResponse
 import datetime
 # Créez vos vues ici.
 def hello(request):
    today = datetime.datetime.now().date()
    daysOfWeek = ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim']
    return redirect("https://www.djangoproject.com)
 
 def viewArticle(request, articleId):
    """ Une vue qui affiche un article basé sur son ID """
    text = "Affichage de l'article Numéro : %s" %articleId
    return redirect(viewArticles, year = "2045", month = "02")
 
 def viewArticles(request, year, month):
    text = "Affichage des articles de : %s"/%s"%(year, month)
    return HttpResponse(text)

Dans cet exemple, nous importons d'abord le redirection (redirect) de Django. Facilitez l'accès au site web officiel de Django, nous n'avons besoin que de l'URL complète pour la méthode "redirect" en tant que chaîne de caractères, dans le second exemple (dans la vue viewArticle), la méthode "redirect" prend le nom de la vue et ses paramètres en tant que paramètres.

Accéder/myapp/hello, affichera l'écran suivant-

et accéder /myapp/article/42Cela donnera l'écran suivant-

Vous pouvez également spécifier si "redirect" est temporaire ou permanent, en ajoutant le paramètre permanent = True. L'utilisateur ne verra pas de différence, mais ce sont des détails, pris en compte par les moteurs de recherche lors du classement des sites web.

Nous définissons le paramètre "name" dans url.py lors de la correspondance des URL.

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

Ce nom (ici l'article) peut être utilisé comme argument de la méthode 'redirect', alors la redirection viewArticle peut être modifiée -

# Fichier : example.py
# Copyright : 2020 By w3codebox
# Auteur par : fr.oldtoolbag.com
# Date : 2020-08-08
def viewArticle(request, articleId):
    """ Une vue qui affiche un article basé sur son ID """
    text = "Affichage de l'article Numéro : %s" %articleId
    return redirect(viewArticles, year = "2045", month = "02")

Modifiez-le en −

# Fichier : example.py
# Copyright : 2020 By w3codebox
# Auteur par : fr.oldtoolbag.com
# Date : 2020-08-08
def viewArticle(request, articleId):
    """ Une vue qui affiche un article basé sur son ID """
    text = "Affichage de l'article Numéro : %s" %articleId
    return redirect(articles, year = "2045", month = "02")

 - Il y a une fonction pour générer une URL; elle est utilisée de la même manière pour rediriger; la méthode 'reverse' (django.core.urlresolvers.reverse). Cette fonction ne retourne pas un objet HttpResponseRedirect, mais contient simplement l'URL et tous les paramètres transmis pour compiler la chaîne de vue.