Est-il possible d'obtenir l'URL de la page actuelle et tous ses paramètres dans un modèle Django?
Par exemple, une étiquette de modèle imprimant une URL complète telle que /foo/bar?param=1&baz=2
Est-il possible d'obtenir l'URL de la page actuelle et tous ses paramètres dans un modèle Django?
Par exemple, une étiquette de modèle imprimant une URL complète telle que /foo/bar?param=1&baz=2
Écrire un contexte personnalisé processeur. par exemple
def get_current_path(request):
return {
'current_path': request.get_full_path()
}
ajouter un chemin d'accès à cette fonction dans votre TEMPLATE_CONTEXT_PROCESSORS
paramètres de la variable, et à utiliser dans votre modèle comme suit:
{{ current_path }}
Si vous voulez avoir le plein request
objet dans chaque requête, vous pouvez utiliser le haut- django.core.context_processors.request
contexte du processeur, et ensuite utiliser {{ request.get_full_path }}
dans votre modèle.
Voir:
Utilisez le processeur de contexte de compilation de Django pour obtenir la demande dans un contexte de modèle. Dans les paramètres, ajoutez request
processeur à TEMPLATE_CONTEXT_PROCESSORS
TEMPLATE_CONTEXT_PROCESSORS = (
# Put your context processors here
'django.core.context_processors.request',
)
Et en utilisation de template:
{{ request.get_full_path }}
De cette façon, vous n'avez pas besoin d'écrire de nouveau code par vous-même.
Django a beaucoup de choses, mais si vous n'avez pas explicite ce que vous voulez à utiliser, il ne sera pas utilisé.
Ainsi, dans MTV schéma (Modèle, le Modèle, la vue reçoit une demande et utilise un modèle de rendu de générer une réponse, en passant sur un dictionnaire ou toutes les variables locales (à l'aide de la population locale() function) de ce point de vue. Sachant cela, nous pouvons insérer l'url courante, qui est venu de la réponse, comme ceci:
views.py:
from django.shortcuts import render
def page(request):
currentUrl = request.get_full_path()
return render(request, 'app/page.html', locals())
Ensuite, dans le modèle "app/page.html' vous avez juste à faire ce qui suit pour afficher le currentUrl variable que nous venons de créer et traversé par les habitants():
app/template/page.html:
{{ currentUrl }}
Dans addtition à sdolan de réponse:
si vous utilisez l'I18N et souhaite transmettre next
valeur /i18n/setlang/
pour changer la langue de la page en cours, alors vous aurez besoin d'enlever actuel code de langue à partir du chemin d'accès complet ce soit. Quelque chose comme:
full_path = request.get_full_path()
current_path = full_path[full_path.index('/', 1):]
Cela suppose que chaque chemin a format /LANG_CODE/any/other/stuff/with/?param='yay'
et simplement débute LANG_CODE
quel qu'il soit (par exemple, /en/
seront /
).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.