장고:URL을 하드코딩하지 않고 보기의 URL을 인쇄합니다.
문제
URL을 인쇄할 수 있나요? /admin/manage/products/add
템플릿의 특정 보기는 무엇입니까?
링크를 생성하려는 규칙은 다음과 같습니다.
(r'^manage/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''}),
하드코딩하지 않고 템플릿에 /manage/products/add를 추가하고 싶습니다.어떻게 해야 하나요?
편집하다: 저는 기본 관리자를 사용하고 있지 않습니다(음, 저는 사용하고 있지만 다른 URL에 있습니다). 이것은 제 것입니다.
해결책
당신이 사용할 수있는 get_absolute_url
, 그러나 이는 특정 개체에 대해서만 작동합니다.개체가 아직 생성되지 않았으므로 이 경우에는 작동하지 않습니다.
사용하고 싶으신가요? 명명된 URL 패턴.간단한 소개는 다음과 같습니다.
urls.py의 줄을 다음과 같이 변경하세요.
(r'^manage/products/add/$', create_object, {'model': Product, 'post_save_redirect': ''}, "create-product"),
그런 다음 템플릿에서 이를 사용하여 URL을 표시합니다.
{% url create-product %}
Django 1.5 이상을 사용하는 경우 다음이 필요합니다.
{% url 'create-product' %}
명명된 URL 패턴을 사용하면 더욱 강력한 작업을 수행할 수 있으며 매우 편리합니다.개발 버전(및 1.0)에만 해당됩니다.
다른 팁
당신이 사용하는 경우 명명된 URL 패턴 템플릿에서 다음을 수행할 수 있습니다.
{% url create_object %}
URL을 생성하는 가장 좋은 방법은 get_absolute_url
모델 클래스에 대한 메서드입니다.최소한 KISS 철학을 따르는 데 더 가까워질 수 있도록 경로를 하드코딩할 수 있습니다.
다음을 활용하면 더 멀리 나아갈 수 있습니다. permalink
URL 구성을 기반으로 경로를 계산하는 데코레이터입니다.
django 문서에서 더 많은 내용을 읽을 수 있습니다. 여기.