developer tip

Django : 템플릿에서 매개 변수를 포함한 현재 페이지의 URL 가져 오기

optionbox 2020. 12. 24. 23:38
반응형

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

참조 URL : https://stackoverflow.com/questions/3248682/django-get-url-of-current-page-include-parameters-in-a-template

반응형