Comment obtenir l’URL actuelle dans un modèle Django?

Je me demandais comment obtenir l’URL actuelle dans un modèle.

Disons que mon URL était

/user/profile/ 

Comment puis-je le retourner au modèle?

Django 1.9 et supérieur:

 ## template {{ request.path }} {{ request.get_full_path }} 

Vieux:

 ## settings.py TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.request', ) ## views.py from django.template import * def home(request): return render_to_response('home.html', {}, context_instance=RequestContext(request)) ## template {{ request.path }} 

Vous pouvez récupérer l’URL dans votre modèle comme ceci:

 

URL of this page: {{ request.get_full_path }}

ou par

{{ request.path }} si vous n’avez pas besoin des parameters supplémentaires.

Quelques précisions et corrections doivent être apscopes aux réponses des hypètes et des Igancio , je résumerai simplement toute l’idée ici, pour référence future.

Si vous avez besoin de la variable de request dans le modèle, vous devez append «django.core.context_processors.request» aux parameters TEMPLATE_CONTEXT_PROCESSORS , ce n’est pas par défaut (Django 1.4).

Vous devez également ne pas oublier les autres processeurs de contexte utilisés par vos applications. Donc, pour append la requête aux autres processeurs par défaut, vous pouvez append ceci dans vos parameters, pour éviter de coder en dur la liste des processeurs par défaut (cela pourrait très bien changer dans les versions ultérieures):

 from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP TEMPLATE_CONTEXT_PROCESSORS = TCP + ( 'django.core.context_processors.request', ) 

Ensuite, à condition que vous envoyiez le contenu de la request dans votre réponse , par exemple comme ceci:

 from django.shortcuts import render_to_response from django.template import RequestContext def index(request): return render_to_response( 'user/profile.html', { 'title': 'User profile' }, context_instance=RequestContext(request) ) 

Dans le modèle django
Obtenez simplement l’URL actuelle de {{request.path}}
Pour obtenir une URL complète avec les parameters {{request.get_full_path}}

Remarque : Vous devez append une request dans django TEMPLATE_CONTEXT_PROCESSORS

Je suppose que l’envoi à la demande de modèle complet est un peu redondant. Je le fais de cette façon

 def home(request): app_url = request.path return render(request, 'home.html', {'app_url': app_url}) ##template {{ app_url }} 

Les autres réponses étaient incorrectes, du moins dans mon cas. request.path ne fournit pas l’URL complète, mais uniquement l’URL relative, par exemple /paper/53 . Je n’ai trouvé aucune solution appropriée, alors j’ai fini par coder en dur la partie constante de l’URL dans la vue avant de la concaténer avec request.path .

Ceci est une ancienne question mais elle peut être résumée aussi facilement si vous utilisez django-registration.

Dans votre lien Connexion et déconnexion (disons dans l’en-tête de votre page), ajoutez le paramètre suivant au lien qui ira à la connexion ou à la déconnexion. Votre lien devrait ressembler à ceci.

 
  • Log In
  • Log Out
  • C’est tout simplement ça, il n’y a rien d’autre à faire, à la déconnexion, ils seront immédiatement redirigés vers la page où ils se trouvent. Même s’ils essaient incorrectement de se connecter, cela fonctionne toujours.

    Les réponses ci-dessus sont correctes et donnent une réponse rapide.

    Je cherchais également à obtenir l’URL de la page actuelle dans le modèle Django car mon intention était d’activer la HOME page MEMBERS page CONTACT page ALL POSTS page lorsqu’ils sont demandés.

    Je colle la partie de l’extrait de code HTML que vous pouvez voir ci-dessous pour comprendre l’utilisation de request.path . Vous pouvez le voir sur mon live website http://pmtboyshostelraipur.pythonanywhere.com/