[django] Django 템플릿 내에서 현재 URL을 얻는 방법은 무엇입니까?

템플릿 내에서 현재 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 }} 추가 매개 변수가 필요하지 않은 경우

일부 정확성과 수정은 hypeteIgancio의 답변으로 가져와야 합니다. 나중에 참조 할 수 있도록 여기에 전체 아이디어를 요약하겠습니다.

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

참고 : requestdjango 를 추가해야합니다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있습니다.