在通用应用程序中实现模板标签 - django

时间:2009-06-17 14:08:43

标签: django django-templates

我开发了一些基于contrib评论应用程序的代码,例如ajax请求的处理程序。此代码位于单独的应用程序中,我们可以将其称为“comments2”。项目的url配置的结构使得对/ comments的所有调用都定向到此应用程序的视图。这没有问题。

最近我制作了一个新页面,显示标记为不合适的评论。

我认为最好通过编写包含模板标签来完成,然后写一个。它的工作原理如下:

{% display_flagged_comments 'market' %}

此标记位于主应用程序的相关模板中。

如上面的代码所示,我传递了评论所属的模型(在本例中为市场),以便comments2应用程序保持通用。

我在这里有三个问题需要指导:

首先,我觉得模型参数在引号内('市场')会使代码变得不那么优雅。在代码中,参数转换为模型:

#template tag
def show_comments(modelname):
    model = ContentType.objects.get(model=modelname)
    ... # get comments and return them 

其次,由于所有带 / comments 的请求都定向到comment2应用,我需要为此页面设置一个不同的网址(它位于主应用内),例如/ managecomments。我觉得这样做也很不优雅。

第三,我想知道我是否遵循了正确的道路,或者是否有更好的方法来实现我想要做的事情。

提前致谢。

1 个答案:

答案 0 :(得分:0)

ContentTypeManager已经为您解决了第一个问题。您可以使用方法get_for_model,它同时接受类或实例。阅读更多the contettypes docs