【问题标题】:Call Django template tag with userinput使用用户输入调用 Django 模板标签
【发布时间】:2019-08-06 05:08:33
【问题描述】:

我想使用 Django 自定义模板标签来检查用户 ID 是否在数据库中。我们已经创建了一个自定义模板标签,目前可以使用,但我无法让它与表单一起使用。

目标是不刷新整个页面,而只显示此查询的结果。怎么可能做到这一点?

HTML 表单:

<form role="form" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="text">
    <button>Check Me</button>
</form>

{{ test|testid:123 }} <!-- Works, shows True or False -->

过滤器:

@register.filter
def testid(value, test_id):
    if Test.objects.filter(id=test_id).exists():
        return True
    return False

我试着查了一下,但似乎大多数人都是通过实现 iQuery 来做到这一点的,只是使用表单或类似的东西,我试图避免这种情况,并希望为此使用模板标签。

【问题讨论】:

  • 您可以再编写一个函数并使用 ajax 调用该函数。 ajax 加载时页面刷新。

标签: django django-templates


【解决方案1】:

Django 只是一个后端系统。它的参与在 html 模板层结束,即它不提供任何实时的东西。默认情况下,所有交互都涉及到服务器的往返,即页面刷新。这并不意味着您不能在 Django 项目中进行实时 Ajax 交互,只是 Django 不会在这方面为您提供帮助,并且您不会在 Django 文档中找到任何帮助。

在不刷新页面的情况下产生这些结果需要做更多的工作。在大多数情况下,我认为人们过分迷恋于实现这一目标。你需要设置一个接收视图,编写javascript或jquery发布到接收视图,将数据保存在接收视图中,假设后端保存,还需要编写js实时更新页面顺利。一切皆有可能,我们都做到了,但请考虑是否值得。

如果这是绝对要求,请深入研究,因为这将需要相当多的自定义代码和工具。

【讨论】:

  • 你可能是对的。我仍然希望能有一些工作,但最终决定使用单独的视图进行检查和结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-20
  • 2011-06-15
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
相关资源
最近更新 更多