【问题标题】:Django Custom Template tag to check model's field用于检查模型字段的 Django 自定义模板标签
【发布时间】:2015-07-16 02:05:06
【问题描述】:

我有一个模型将显示在 ListView 中。模型中的字段之一是具有 3 个选项的类别。当我显示模板时,我希望能够区分这 3 个类别。我考虑覆盖 get_context_data() 通过获取所有对象并过滤它们来为每个类别添加上下文。

这会比自定义模板标签更好吗?

即使是这样,假设我仍然想创建自定义模板标签来完成此操作,我将如何编写它?我知道如何编写自定义标签,但我不确定如何编写这样的标签。

我能想到的唯一想法是创建一个类似的标签:

@register.simple_tag(name="is_cat1", takes_context=True)
def is_cat1(self, context):
    objs = context['object_list']
    if (MyModel.objects.filter(category__icontains="Cat1") in objs):
        objs = MyModel.objects.filter(category__icontains="Cat1")
    return objs  

谁能提供一个处理此类模型的过滤器示例?以及回答我关于使用上下文是否更好的问题?

谢谢

【问题讨论】:

  • 不能从模板标签调用模型。您对此有 ajax 调用。
  • 我开始意识到上下文对象是唯一的解决方案,AJAX 是什么意思?
  • 不是为了这个,而是在模板中
  • 我的意思是你能给我一个在模板中用于访问模型的 AJAX 调用的示例吗?就像你提到的那样?
  • AJAX 是一个 javascript 概念 - 它并不是 django 模板的一部分。使用 AJAX,您可以向服务器发送查询并返回对象(通常为 json)并使用此 json 填充其他 html 实体。在这里阅读更多 - en.wikipedia.org/wiki/Ajax_(programming)

标签: python django


【解决方案1】:

使用 AJAX 是正确的解决方案。这样的操作不符合 Django 的框架和预期用途。

【讨论】:

    猜你喜欢
    • 2021-07-13
    • 2015-01-20
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2021-09-30
    相关资源
    最近更新 更多