【问题标题】:Django Form so many fieldsDjango Form 这么多字段
【发布时间】:2021-12-14 00:42:04
【问题描述】:

我有一个 Django 页面,它使用引导程序和显示表单的清晰表单。但是现在表单增长得如此之快,以至于我可能有大约 50 个字段 :( 它们都在 1 个巨大的 HTML 页面中。我很确定这是错误的做法。

是否可以将表单拆分为 5 页,但仍有提交按钮将所有字段发布到数据库?

目前,我所做的是为巨型表单的每个部分创建选项卡,这样比滚动更容易。

我认为最好为每个部分创建不同的视图,然后使用 IndexKey 或其他方式将数据链接回来?

但我不知道如何配置按钮以捕获所有字段。

我知道这是一个垃圾问题,但我真的不知道要搜索什么?

干杯

【问题讨论】:

    标签: django django-crispy-forms modelform


    【解决方案1】:

    您为什么不将数据输入分解为您认为适合每个页面的尽可能多的问题?如果你有 50 个输入,你可以在 5 个页面上做 10 个。

    提交第 1 页后,将 POST 数据返回到第 2 页,并将数据存储在隐藏的输入字段中。重复该过程直到第 5 页,此时您可以将所有 50 个 POST 到服务器并将数据插入到您的数据库中。

    【讨论】:

    • 感谢您的建议,这是否意味着我将在 5 页上有 40 个隐藏字段而 10 个未隐藏?假设从用户体验的角度来看会更好看?如何将 Post 数据返回到第 2 页等?
    • 是的,这就是我的建议。您可以让用户单击下一页按钮,该按钮将调用一个函数,该函数将通过 AJAX 调用将数据从第一页发布到服务器。然后,您可以将数据作为 JSON 对象返回到第 2 页并存储在隐藏的输入字段中。
    • 听起来不错,但我没有这样做的技能。
    【解决方案2】:

    您可以尝试在引导选项卡中划分表单,例如 个人信息 --> 表单域 附加信息 --> 表单字段

    【讨论】:

    • 这就是我所做的,我基本上有 5 个标签。但所有的 html 都在 1 页中。这可能没问题,我只是检查这是否可以,或者我应该像 rasta 所说的那样将 html 分成 5 页
    • 您可以使用{% include %}{% block xxx %} 和继承{% extends yyy %} 将其拆分为程序员的理智目的。每个引导选项卡一个文件和基本模板中的引导整体设计?
    • 如果您开始需要根据之前的答案获取子表单中的信息,还有 Django 表单向导。简单地将大型表单分解为多个“选项卡”或其他部分,这有点像大锤。 django-formtools.readthedocs.io/en/latest/wizard.html
    猜你喜欢
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 2018-05-07
    相关资源
    最近更新 更多