【问题标题】:Generating dynamic forms on the fly in the Django Template在 Django 模板中动态生成动态表单
【发布时间】:2015-11-23 07:30:02
【问题描述】:

我有一个 Django 模板(html 文件)。它包含一个包含许多选项的下拉选择器。选择每个选项时,浏览器上会显示一个预定义的表单。每个这样的表单都有一个预定义的字段。

例如,在选择关于选项时,表单将是 -

Name - 
Age - 

在选择教育选项时,表格将是 -

University - 
CGPA - 

现在实现此功能的最佳方式是什么?

格式 1 - 在选择任何选项时,我对服务器进行 Ajax 调用并返回要显示的字段的 json。

格式 2 - 我在模板中硬编码了几个表格,并根据所选选项使它们的可见性 - 真实。(我不相信这一点)

格式 3 - 我在这里寻找的任何新解决方案。

谢谢

【问题讨论】:

    标签: javascript ajax django django-forms


    【解决方案1】:

    实现这一点的一种方法是我几天前实现它的方式:

    将 ajax 调用发送到您需要的表单的服务器,然后将 from 发送回 HTML 表单中的模板。

    form = Yourform()
    form = form.as_p()
    return HttpResponse(form)
    

    这将以 HTML 格式返回您的表单。现在你需要做的就是用这个新表单替换你的容器。 希望这会有所帮助!

    【讨论】:

    • 请注意,由于@akg 提到表单可能完全不同,因此views.py 中处理表单的方法必须确定模板中填写的表单类型。跨度>
    • 因为@akg 可以使用简单的 if else 条件。我认为这是这里的重要部分。 :D
    • 我没有对“重要部分”发表任何评论,我只想指出模板本身的表单无法告诉后端应该使用哪个表单。 POST 数据中必须有其他内容才能告诉后端。
    【解决方案2】:

    取决于以后谁来维护它!

    如果您要在后端查询字段,那么想要向表单添加新字段的人必须访问后端代码并将其插入到那里。一般来说,不是每个人都可以使用它!那个人需要了解 Django。此外,使用 ajax 时,您仍在发出 HTTP 请求,尽管是在 localhost 上,与硬编码的表单相比可能会有轻微的延迟

    相反,您可能可以充分利用 django 模板引擎,例如模板继承和其他东西,以减少您的代码冗余并将表单保留在前端本身!这样,如果前端人员必须添加新内容,他可以在 HTML 中完成!

    如果表单中有数千个字段太多而无法键入或维护,那么您可以发出 ajax 请求。否则保持在前端效果很好!

    希望这会有所帮助!

    (谁打算对答案投反对票,也请务必说明原因,以便投反对票)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 2019-01-04
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2014-10-07
      相关资源
      最近更新 更多