我想制作一个django自定义标签,以显示用户正在阅读文章的类别中的10个条目标题。我怎样才能做到这一点?我需要通过实际条目中的类别。Django,自定义标签...怎么样?
回答
做到这一点的最好方法是使用包含标签。这是一个呈现呈现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文件。然后,从你的主模板调用它,你只是做
{% related_articles article 10 %}
其中article
是文章对象的名称。
http://www.b-list.org/weblog/2006/jun/07/django-tips-write-better-template-tags/ James Bannet描述了一种技术,即如何制作更通用的标签。即你可以为模型“新闻”,“文章”,“事件”使用一个template_tag ......它并不轻描淡写地希望你描述,但值得一读。 – vikingosegundo 2009-09-20 16:50:13
@Daniel:我的浏览器告诉我,我投了你的答案。我没有打算,我当然没有点击它。我不知道,它是怎么发生的。它说你需要编辑答案,以便我可以删除我的倒票。对不便之处... – vikingosegundo 2009-09-20 16:55:43
没问题,我编辑它。尽管如此,链接詹姆斯的作品还是+1。 – 2009-09-20 17:39:37
为什么使用自定义标签?向文章模型添加一个方法,并从模板中调用该方法可能会更好,更干净。根据你的模型,这个方法实际上是微不足道的。
是的。有点像Article.get_related_titles(10) – Evgeny 2009-09-20 04:47:04
嗨,大家好,感谢您的回复,即时新与Django,抱歉:) ..即时通讯使用Django通用视图基于日期,我失去了这部分...在模型中做一个方法? ,我知道什么是方法,但是,你在模型中谈论queryset? – Asinox 2009-09-20 05:03:57
在模型类定义中,您可以添加任意方法(与添加__unicode __()或get_absolute_url()相同),其返回值可在模板中自动提供。 – 2009-09-20 05:46:31
入住这里制作自定义标签:
http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#howto-custom-template-tags
您将需要相关的类对象传递给模板上下文。
- 1. Django自定义标签'takes_context'
- 2. Django自定义标签
- 3. 解析自定义模板标签内的Django自定义模板标签
- 4. django自定义标签与模板块?
- 5. Django管理内联 - 自定义标签?
- 6. django头像自定义模板标签
- 7. Django自定义包含标签
- 8. 传送 - django自定义标签
- 9. Django中UserProfileForm的自定义标签
- 10. Django的自定义模板标签
- 11. 定义自定义标签
- 12. Django REST:自定义样式
- 13. ColdFusion的使用自定义标签中自定义标签
- 14. 我是怎样做到有jQuery来选择自定义HTML标签
- 15. 我怎样才能标签
- 16. Docusign自定义标签 - 配方标签
- 17. LWUIT标签:创建自定义标签
- 18. 创建自定义标签
- 19. 自定义控件标签
- 20. 浮动标签自定义
- 21. 自定义Highcharts xaxis标签
- 22. 删除自定义标签
- 23. getSafeHTML的自定义标签()
- 24. javadoc自定义标签
- 25. 自定义模板标签
- 26. symfony2 textfield自定义标签
- 27. 自定义模板标签
- 28. Android自定义标签
- 29. Simple_form_for自定义标签
- 30. Android自定义标签栏
也许你可以告诉我们你的模型是怎样的。 – 2009-09-20 05:57:24