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?
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?
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 }}
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)
)
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.
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.