【问题标题】:implementing a template tag within a generic app - django在通用应用程序中实现模板标签 - django
【发布时间】:2010-11-03 16:24:14
【问题描述】:

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

最近我创建了一个新页面,显示 cmets 被标记为不合适。

我认为最好通过编写包含模板标签来完成,并写了一个。它的工作原理是这样的:

{% display_flagged_comments 'market' %}

这个标签被放置在主应用的相关模板中。

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

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

首先,我觉得模型参数包含在引号 ('market') 中会使代码不太优雅。在代码中,参数被转换为模型:

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

其次,由于所有带有 /cmets 的请求都被定向到 comment2 应用程序,我需要为此页面设计一个不同的 url(它位于主应用程序内),例如 /managecmets。我觉得这样做也很不雅。

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

提前致谢。

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    ContentTypeManager 在一定程度上为您解决了第一个问题。您可以使用方法get_for_model,它接受类或实例。在the contettypes docs 阅读更多内容。

    【讨论】:

      猜你喜欢
      • 2015-11-23
      • 2014-04-24
      • 2014-03-20
      • 2014-09-13
      • 1970-01-01
      • 2015-02-24
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      相关资源
      最近更新 更多