문제

Django의 템플릿 언어에서는 다음을 사용할 수 있습니다. {% url [viewname] [args] %} 매개변수를 사용하여 특정 보기에 대한 URL을 생성합니다.Python 코드에서 프로그래밍 방식으로 동일한 작업을 어떻게 수행할 수 있습니까?

나에게 필요한 것은 각 항목에 이름, URL 및 활성 플래그(현재 페이지인지 여부)가 있는 메뉴 항목 목록을 만드는 것입니다.이는 템플릿 언어보다 Python에서 이 작업을 수행하는 것이 훨씬 더 깔끔하기 때문입니다.

도움이 되었습니까?

해결책

다음과 유사한 것을 사용해야 하는 경우 {% url %} 코드에 템플릿 태그를 추가하면 Django는 django.core.urlresolvers.reverse().그만큼 reverse 함수에는 다음과 같은 서명이 있습니다.

reverse(viewname, urlconf=None, args=None, kwargs=None)

https://docs.djangoproject.com/en/dev/ref/urlresolvers/

다른 팁

나는 두 가지 다른 접근 방식을 사용하고 있습니다. 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).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top