2009-09-20 3 views
1

django 사용자 정의 태그를 작성하여 사용자가 기사를 읽는 카테고리의 항목 10 개를 표시하고 싶습니다. 어떻게해야합니까? 나는 실제 항목에서 범주를 전달해야합니다.장고, 커스텀 태그 ... 어떻게?

+0

아마도 모델이 어떻게 보이는지 보여줄 수 있습니다. –

답변

8

이렇게하는 가장 좋은 방법은 포함 태그를 사용하는 것입니다. 이것은 10 개의 관련 기사를 렌더링하는 템플릿 조각을 렌더링하는 태그입니다.

당신은 단지 태그로 현재 문서에 전달하고 템플릿 조각에 대한 컨텍스트를 반환 - 관련 기사 즉.

@register.inclusion_tag('related_articles.html') 
def related_articles(article, count): 
    category = article.category 
    articles = category.article_set.exclude(id=article.id)[:count] 
    return {'articles': articles} 

기사를 출력하는 템플릿 디렉토리에는 related_articles.html 파일이 필요합니다. 그런 다음, article 기사 개체의 이름입니다 그냥

{% related_articles article 10 %} 

할 것, 기본 템플릿에서 호출합니다.

+2

http://www.b-list.org/weblog/2006/jun/07/django-tips-write-better-template-tags/ James Bannet은 더 일반적인 태그를 만드는 방법을 기술합니다. 즉, "뉴스", "기사", "이벤트"모델에 대해 하나의 template_tag를 사용할 수 있습니다 ... 당신이 묘사하고 싶지만 독서할만한 가치가있는 것은 아닙니다. – vikingosegundo

+0

@ 대니얼 (Daniel) : 제 브라우저는 당신의 대답에 동의하지 않았다고 알려줍니다. 나는 의도하지 않았다. 그리고 나는 그것을 확실히 클릭하지 않았다. 나는 그것이 어떻게 일어 났는지 알지 못한다. 응답을 편집해야한다고 말합니다. 그래서 투표를 삭제할 수 있습니다. 불편을 끼쳐 드려 죄송합니다 ... – vikingosegundo

+0

문제 없으며 편집했습니다. 제임스의 작품에 대한 링크 +1.'ManyRelatedManager'개체가 어떤 속성 'noticia_set' 제 분야 카테고리가 없습니다 :, 내가 렌더링하는 동안 예외가 겁에 질린 관계 에 대해 "comun 오류"알고 단지보다 노력을 알고 "이 작업은" –

2

맞춤 태그가 필요한 이유는 무엇입니까? 기사 모델에 메소드를 추가하고 템플릿에서 호출하는 것이 더 깔끔하고 좋다. 모델에 따라이 방법은 거의 사소 할 것입니다. 여기에 사용자 정의 태그를 만들기위한

+0

예. Article.get_related_titles (10) – Evgeny

+0

안녕 얘들 아, 답장을 보내 주셔서 감사합니다, 장고, 미안와 함께 새로운 :) 메신저 장고 일반보기 날짜 기준으로,이 부분으로 잃어버린 메신저 ... 모델에서 메서드를 만드는가 ?? , 나는 방법이 뭔지는 알지만, 당신은 모델에서 queryset에 대해 이야기하고 있습니까? – Asinox

+0

모델 클래스 정의에서 __unicode __() 또는 get_absolute_url()을 추가하는 것과 동일한 방식으로 임의의 메소드를 추가 할 수 있습니다. 반환 값은 템플릿에서 자동으로 사용 가능합니다. –