장고:URL을 하드코딩하지 않고 보기의 URL을 인쇄합니다.

StackOverflow https://stackoverflow.com/questions/47207

  •  09-06-2019
  •  | 
  •  

문제

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 문서에서 더 많은 내용을 읽을 수 있습니다. 여기.

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