Django : 템플릿에서 매개 변수를 포함한 현재 페이지의 URL 가져 오기
Django 템플릿에서 현재 페이지 URL과 모든 매개 변수를 가져 오는 방법이 있습니까?
예를 들어, 다음과 같은 전체 URL을 인쇄하는 템플릿 태그 /foo/bar?param=1&baz=2
사용자 정의 컨텍스트 프로세서를 작성하십시오. 예 :
def get_current_path(request):
return {
'current_path': request.get_full_path()
}
TEMPLATE_CONTEXT_PROCESSORS
설정 변수 에 해당 함수에 대한 경로를 추가하고 다음과 같이 템플릿에서 사용합니다.
{{ current_path }}
request
모든 요청에 전체 개체를 포함하려면 기본 제공 django.core.context_processors.request
컨텍스트 프로세서를 사용한 다음 {{ request.get_full_path }}
템플릿에서 사용할 수 있습니다.
보다:
Django의 컨텍스트 프로세서 빌드를 사용하여 템플릿 컨텍스트에서 요청을 가져옵니다. 설정에서 request
프로세서 추가TEMPLATE_CONTEXT_PROCESSORS
TEMPLATE_CONTEXT_PROCESSORS = (
# Put your context processors here
'django.core.context_processors.request',
)
그리고 템플릿 사용 :
{{ request.get_full_path }}
이렇게하면 직접 새 코드를 작성할 필요가 없습니다.
context_processors.py 파일 (또는 유사)에서 :
def myurl( request ):
return { 'myurlx': request.get_full_path() }
settings.py에서 :
TEMPLATE_CONTEXT_PROCESSORS = (
...
wherever_it_is.context_processors.myurl,
...
template.html에서 :
myurl={{myurlx}}
장고에는 많은 내장 기능이 있지만, 무엇을 사용하고 싶은지 명시하지 않으면 사용되지 않습니다.
따라서 MTV 스키마 (모델, 템플릿, 뷰)에서 뷰는 요청을 받고 템플릿 렌더링을 사용하여 응답을 생성하고이 뷰의 사전 또는 모든 로컬 변수 (locals () 함수 사용)를 전달합니다. 이를 알면 다음과 같이 응답에서 가져온 현재 URL을 삽입 할 수 있습니다.
views.py :
from django.shortcuts import render
def page(request):
currentUrl = request.get_full_path()
return render(request, 'app/page.html', locals())
그런 다음 템플릿 'app / page.html'에서 방금 만들고 locals ()를 통해 전달한 currentUrl 변수를 표시하려면 다음을 수행해야합니다.
app / template / page.html :
{{ currentUrl }}
sdolan의 답변에 추가로 :
I18N을 사용 중이고 현재 페이지의 언어를 변경 next
하기 /i18n/setlang/
위해 값 을 전달하려는 경우 전체 경로에서 현재 언어 코드를 제거해야합니다. 다음과 같은 것 :
full_path = request.get_full_path()
current_path = full_path[full_path.index('/', 1):]
이것은 모든 경로에 형식이 /LANG_CODE/any/other/stuff/with/?param='yay'
있고 단순히 LANG_CODE
그것이 무엇이든 시작 한다고 가정합니다 (예 : /en/
결과는 /
).
귀하의 URL이 다른 URL과 다른지 확인할 수 있습니다.
{% if 'foo/bar/' in request.get_full_path %}
'developer tip' 카테고리의 다른 글
aspx 파일에 네임 스페이스를 추가하는 방법은 무엇입니까? (0) | 2020.12.24 |
---|---|
자바 스크립트에서 HTML 요소의 스타일 값을 얻는 방법은 무엇입니까? (0) | 2020.12.24 |
NumPy의 수학 함수가 Python보다 빠릅니까? (0) | 2020.12.24 |
줄 번호 정보와 함께 gcc를 사용하여 C ++에 대한 스택 추적을 얻는 방법은 무엇입니까? (0) | 2020.12.24 |
서버 전략에서 데이터를 캐시하기위한 클라이언트 (iOS)의 핵심 데이터 (0) | 2020.12.24 |