템플릿 내에서 현재 URL을 얻는 방법이 궁금합니다.
현재 URL이 다음과 같다고 가정 해 보겠습니다.
.../user/profile/
템플릿으로 어떻게 되 돌리나요?
답변
장고 1.9 이상 :
## template
{{ request.path }} # -without GET parameters
{{ request.get_full_path }} # - with GET parameters
낡은:
## 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 }}
답변
다음과 같이 템플릿에서 URL을 가져올 수 있습니다.
<p>URL of this page: {{ request.get_full_path }}</p>
또는
{{ request.path }}
추가 매개 변수가 필요하지 않은 경우
일부 정확성과 수정은 hypete 와 Igancio의 답변으로 가져와야 합니다. 나중에 참조 할 수 있도록 여기에 전체 아이디어를 요약하겠습니다.
request
템플릿에 변수 가 필요한 경우 ‘django.core.context_processors.request’를 설정에 추가 해야합니다TEMPLATE_CONTEXT_PROCESSORS
. 기본적으로는 아닙니다 (Django 1.4).
또한 응용 프로그램에서 사용하는 다른 컨텍스트 프로세서를 잊지 않아야합니다 . 따라서 다른 기본 프로세서에 요청을 추가하려면 기본 프로세서 목록을 하드 코딩하지 않기 위해 설정에서 추가 할 수 있습니다 (이는 이후 버전에서 매우 변경 될 수 있음).
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
'django.core.context_processors.request',
)
그런 다음 응답에 내용 을 보내면request
예를 들어 다음과 같습니다.
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)
)
답변
아래 코드가 도움이됩니다.
{{ request.build_absolute_uri }}
답변
django 템플릿
에서 {{request.path}}
매개 변수로 전체 URL을 얻으려면에서 현재 URL을 가져옵니다.{{request.get_full_path}}
참고 : request
django 를 추가해야합니다TEMPLATE_CONTEXT_PROCESSORS
답변
템플릿으로 보내기 전체 요청이 약간 중복되는 것으로 가정합니다. 나는 이렇게한다
from django.shortcuts import render
def home(request):
app_url = request.path
return render(request, 'home.html', {'app_url': app_url})
##template
{{ app_url }}
답변
적어도 내 경우에는 다른 답변이 잘못되었습니다. request.path
전체 URL을 제공하지 않고 상대 URL 만 제공하십시오 (예 🙂 /paper/53
. 적절한 해결책을 찾지 못했기 때문에 View에 URL의 상수 부분을 하드 코딩하여에 연결했습니다 request.path
.
답변
둘 다 {{ request.path }} and {{ request.get_full_path }}
현재 URL을 반환하지만 절대 URL은 반환하지 않습니다.
your_website.com/wallpapers/new_wallpaper
둘 다 반환됩니다
/new_wallpaper/
(선행 및 후행 슬래시에 주목)
따라서 다음과 같은 작업을 수행해야합니다.
{% if request.path == '/new_wallpaper/' %}
<button>show this button only if url is new_wallpaper</button>
{% endif %}
그러나 (위의 답변 덕분에)를 사용하여 절대 URL을 얻을 수 있습니다
{{ request.build_absolute_uri }}
참고 :에 포함 할 필요는 없습니다 . 이미 포함 request
되어 settings.py
있습니다.