¿Cómo obtener la URL actual dentro de una plantilla de Django?

Me preguntaba cómo obtener la URL actual dentro de una plantilla.

Di que mi URL era

/user/profile/ 

¿Cómo devuelvo esto a la plantilla?

Django 1.9 y superior:

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

Antiguo:

 ## 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 }} 

Puede buscar la URL en su plantilla de esta manera:

 

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

o por

{{ request.path }} si no necesita los parámetros adicionales.

Algunas precisiones y correcciones se deben llevar a las respuestas de Hypete e Igancio, resumiré toda la idea aquí, para referencia futura.

Si necesita la variable de request en la plantilla, debe agregar ‘django.core.context_processors.request’ a la configuración TEMPLATE_CONTEXT_PROCESSORS , no es por defecto (Django 1.4).

Tampoco debe olvidar los otros procesadores de contexto utilizados por sus aplicaciones. Por lo tanto, para agregar la solicitud a los otros procesadores predeterminados, puede agregar esto a su configuración, para evitar codificar por hardware la lista predeterminada de procesadores (que muy bien puede cambiar en las versiones posteriores):

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

Luego, siempre que envíe los contenidos de la request en su respuesta , por ejemplo como este:

 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) ) 

En la plantilla django
Simplemente obtenga la URL actual de {{request.path}}
Para obtener la URL completa con los parámetros {{request.get_full_path}}

Nota : debe agregar una request en django TEMPLATE_CONTEXT_PROCESSORS

Supongo que enviar a plantilla la solicitud completa es un poco redundante. Lo hago de esta manera

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

Las otras respuestas fueron incorrectas, al menos en mi caso. request.path no proporciona la URL completa, solo la URL relativa, por ejemplo, /paper/53 . No encontré ninguna solución adecuada, así que terminé codificando la parte constante de la URL en la Vista antes de concatenarla con request.path .

Esta es una vieja pregunta, pero se puede resumir tan fácilmente como esta si está usando django-registration.

En su enlace de Iniciar sesión y Cerrar sesión (digamos en el encabezado de su página) agregue el siguiente parámetro al enlace que irá a iniciar o cerrar sesión. Tu enlace debería verse así.

 
  • Log In
  • Log Out
  • Eso es simplemente, no se necesita hacer nada más, al cerrar la sesión se los redireccionará inmediatamente a la página en la que se encuentran, para iniciar sesión, completarán el formulario y luego lo redireccionarán a la página en la que se encontraban. Incluso si intentan iniciar sesión incorrectamente, todavía funciona.

    Las respuestas anteriores son correctas y dan respuestas grandes y cortas.

    También estaba buscando la URL de la página actual en la plantilla de Django ya que mi intención era activar la HOME page , la MEMBERS page , la CONTACT page , ALL POSTS page cuando se soliciten.

    Estoy pegando la parte del fragmento de código HTML que puede ver a continuación para comprender el uso de request.path . Puedes verlo en mi live website en live website en http://pmtboyshostelraipur.pythonanywhere.com/