django에서 URL을 생성하는 방법
-
09-06-2019 - |
문제
Django의 템플릿 언어에서는 다음을 사용할 수 있습니다. {% url [viewname] [args] %}
매개변수를 사용하여 특정 보기에 대한 URL을 생성합니다.Python 코드에서 프로그래밍 방식으로 동일한 작업을 어떻게 수행할 수 있습니까?
나에게 필요한 것은 각 항목에 이름, URL 및 활성 플래그(현재 페이지인지 여부)가 있는 메뉴 항목 목록을 만드는 것입니다.이는 템플릿 언어보다 Python에서 이 작업을 수행하는 것이 훨씬 더 깔끔하기 때문입니다.
해결책
다음과 유사한 것을 사용해야 하는 경우 {% url %}
코드에 템플릿 태그를 추가하면 Django는 django.core.urlresolvers.reverse()
.그만큼 reverse
함수에는 다음과 같은 서명이 있습니다.
reverse(viewname, urlconf=None, args=None, kwargs=None)
다른 팁
나는 두 가지 다른 접근 방식을 사용하고 있습니다. models.py
.첫 번째는 permalink
데코레이터:
from django.db.models import permalink
def get_absolute_url(self):
"""Construct the absolute URL for this Item."""
return ('project.app.views.view_name', [str(self.id)])
get_absolute_url = permalink(get_absolute_url)
당신은 또한 전화할 수 있습니다 reverse
곧장:
from django.core.urlresolvers import reverse
def get_absolute_url(self):
"""Construct the absolute URL for this Item."""
return reverse('project.app.views.view_name', None, [str(self.id)])
다음을 사용하여 reverse()
urlconf 모듈은 100% 오류가 없고 처리될 수 있어야 합니다. ViewDoesNotExist
오류 정도, 그렇지 않으면 두려운 일이 발생합니다 NoReverseMatch
예외(템플릿의 오류는 일반적으로 자동으로 실패하여 None
).
제휴하지 않습니다 StackOverflow