399 Stimmen

Wie man die aktuelle URL innerhalb einer Django-Vorlage erhalten?

Ich habe mich gefragt, wie man die aktuelle URL in einer Vorlage abrufen kann.

Nehmen wir an, meine aktuelle URL lautet:

.../user/profile/

Wie kann ich dies in die Vorlage zurückbringen?

366voto

httpete Punkte 5320

Django 1.9 und höher:

## template
{{ request.path }}  #  -without GET parameters 
{{ request.get_full_path }}  # - with GET parameters

Alt:

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

304voto

RedGlyph Punkte 10889

Sie können die URL in Ihrer Vorlage wie folgt abrufen:

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

oder durch

{{ request.path }} wenn Sie die zusätzlichen Parameter nicht benötigen.

Es sollten einige Präzisierungen und Korrekturen vorgenommen werden hypetisch y Igancio's Antworten, fasse ich die ganze Idee hier für die Zukunft zusammen.

Wenn Sie die request Variable in der Vorlage, müssen Sie muss fügen Sie die 'django.core.context_processors.request' zu den TEMPLATE_CONTEXT_PROCESSORS Einstellungen, ist es nicht standardmäßig (Django 1.4).

Sie müssen auch nicht vergessen die anderen von Ihren Anwendungen verwendeten Kontextprozessoren. Um also die Anfrage zu den anderen Standardprozessoren hinzuzufügen, könnten Sie dies in Ihren Einstellungen hinzufügen, um zu vermeiden, dass die Liste der Standardprozessoren hart kodiert wird (die sich in späteren Versionen sehr wohl ändern kann):

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP

TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.core.context_processors.request',
)

Dann, sofern Sie senden die request Inhalte in Ihrer Antwort , zum Beispiel so:

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

43voto

Der folgende Code hilft mir:

 {{ request.build_absolute_uri }}

19voto

Mujeeb Ishaque Punkte 1480

Beide {{ request.path }} and {{ request.get_full_path }} die aktuelle URL zurückgeben, aber nicht die absolute URL, zum Beispiel:

ihre_website.de/wallpapers/neue_wallpaper

Beide werden zurückkehren /new_wallpaper/ (beachten Sie die führenden und nachfolgenden Schrägstriche)

Sie müssen also etwas tun wie

{% if request.path == '/new_wallpaper/' %}
    <button>show this button only if url is new_wallpaper</button>
{% endif %}

Sie können jedoch die absolute URL erhalten, indem Sie (dank der obigen Antwort)

{{ request.build_absolute_uri }}

HINWEIS: Sie müssen nicht angeben request en settings.py ist sie bereits vorhanden.

6voto

Savad KP Punkte 1537

In django Vorlage
Holen Sie sich einfach die aktuelle Url von {{request.path}}
Um die vollständige Url mit Parametern zu erhalten {{request.get_full_path}}

Hinweis : Sie müssen Folgendes hinzufügen request in django TEMPLATE_CONTEXT_PROCESSORS

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X