django 사용자 정의 태그를 작성하여 사용자가 기사를 읽는 카테고리의 항목 10 개를 표시하고 싶습니다. 어떻게해야합니까? 나는 실제 항목에서 범주를 전달해야합니다.장고, 커스텀 태그 ... 어떻게?
답변
이렇게하는 가장 좋은 방법은 포함 태그를 사용하는 것입니다. 이것은 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 %}
할 것, 기본 템플릿에서 호출합니다.
http://www.b-list.org/weblog/2006/jun/07/django-tips-write-better-template-tags/ James Bannet은 더 일반적인 태그를 만드는 방법을 기술합니다. 즉, "뉴스", "기사", "이벤트"모델에 대해 하나의 template_tag를 사용할 수 있습니다 ... 당신이 묘사하고 싶지만 독서할만한 가치가있는 것은 아닙니다. – vikingosegundo
@ 대니얼 (Daniel) : 제 브라우저는 당신의 대답에 동의하지 않았다고 알려줍니다. 나는 의도하지 않았다. 그리고 나는 그것을 확실히 클릭하지 않았다. 나는 그것이 어떻게 일어 났는지 알지 못한다. 응답을 편집해야한다고 말합니다. 그래서 투표를 삭제할 수 있습니다. 불편을 끼쳐 드려 죄송합니다 ... – vikingosegundo
문제 없으며 편집했습니다. 제임스의 작품에 대한 링크 +1.'ManyRelatedManager'개체가 어떤 속성 'noticia_set' 제 분야 카테고리가 없습니다 :, 내가 렌더링하는 동안 예외가 겁에 질린 관계 에 대해 "comun 오류"알고 단지보다 노력을 알고 "이 작업은" –
맞춤 태그가 필요한 이유는 무엇입니까? 기사 모델에 메소드를 추가하고 템플릿에서 호출하는 것이 더 깔끔하고 좋다. 모델에 따라이 방법은 거의 사소 할 것입니다. 여기에 사용자 정의 태그를 만들기위한
예. Article.get_related_titles (10) – Evgeny
안녕 얘들 아, 답장을 보내 주셔서 감사합니다, 장고, 미안와 함께 새로운 :) 메신저 장고 일반보기 날짜 기준으로,이 부분으로 잃어버린 메신저 ... 모델에서 메서드를 만드는가 ?? , 나는 방법이 뭔지는 알지만, 당신은 모델에서 queryset에 대해 이야기하고 있습니까? – Asinox
모델 클래스 정의에서 __unicode __() 또는 get_absolute_url()을 추가하는 것과 동일한 방식으로 임의의 메소드를 추가 할 수 있습니다. 반환 값은 템플릿에서 자동으로 사용 가능합니다. –
점검 :
http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#howto-custom-template-tags
당신은 템플릿 컨텍스트에 관련 카테고리 개체를 전달해야합니다.
아마도 모델이 어떻게 보이는지 보여줄 수 있습니다. –