379 votes

Obtenir l’URL actuelle dans un modèle de django

Hay, je me demandais comment obtenir l’URL actuelle dans un modèle.

Dire que mon URL était

Comment ce retour au modèle ?

Merci

337voto

httpete Points 667
## 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 }}

301voto

RedGlyph Points 6046

Des précisions et des corrections doivent être portées à hypete de et Igancio de réponses, je vais juste résumer l'idée générale ici, pour référence future.

Si vous avez besoin de l' request variable dans le modèle, vous devez ajouter le " django.de base.context_processors.demande à l' TEMPLATE_CONTEXT_PROCESSORS paramètres, ce n'est pas par défaut (Django 1.4).

Vous devez également ne pas oublier l'autre contexte processeurs utilisés par vos applications. Donc, pour ajouter de la demande à l'autre par défaut processeurs, vous pouvez ajouter cette option dans vos paramètres, afin d'éviter de coder en dur le processeur par défaut de la liste (qui peut 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',
)

Alors, à condition de vous envoyer l' request contenu de 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)
    )

vous pouvez récupérer l'URL dans votre modèle, par exemple comme ceci:

<p>URL of this page: {{ request.get_full_path }}</p>

(ou {{ request.path }} si vous n'avez pas besoin de paramètres supplémentaires).

Prograide.com

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.

Powered by:

X