【问题标题】:How to design step-by-step form in Django?如何在 Django 中设计分步表单?
【发布时间】:2018-02-18 13:42:59
【问题描述】:

我已经在我的 Django 网络应用程序上工作了很长一段时间,由于最初的规划不善,我一直在不断地改变和移动我的网络应用程序中的东西,所以现在它完全是一团糟。我决定停止编写代码并反思我希望这些事情如何工作。

提出的问题之一是人们必须填写的申请表。

models.py

class Contact(models.Model):
    ContactName = models.CharField(max_length = 250, default='',         
verbose_name="Contact Name")
    Country = models.CharField(max_length = 250, default='')
    City = models.CharField(max_length = 250, default='')
etc. 

我的表单中将有一百多个字段,我不希望它们一次全部显示,而是逐步显示它们:

个人信息 -> 一般信息 -> 上传支持的文件 -> 等等

我有两个问题:

  1. 我应该将所有 100 个字段保留在一个类 (Contact) 下,还是将它们分解为几个类并使用 ForeignKey 将它们全部连接起来?最佳做法是什么?

  2. 填写个人信息字段后,申请人将按继续,然后将转到一般信息并填写,依此类推。这个逻辑应该在 Django views.py 中处理,还是将使用 JavaScript 完成?还是两者兼而有之?

在我再次触摸键盘之前,我只是想弄清楚一切是如何工作的。

【问题讨论】:

  • 我建议您看看这个其他 SE 网站:Code Review,您的问题可能更适合您的问题(尽管我不确定,我并不是说这个问题不好问这里)
  • 但是,在这里提出两个单独的问题可能会令人不快。
  • 查看您提供的代码 sn-p,即使您忽略行长规定,我也建议学习和使用 PEP-8。它是所有 Python 代码的事实标准。例如,对于初学者,您的模型字段名称将是 contact_namecountrycitypython.org/dev/peps/pep-0008

标签: javascript python django django-models architecture


【解决方案1】:

首先,永远不要基于 UI 设计您的应用程序。表示层不是唯一的,您可以有不同的表示层,如 Web UI、移动 UI 和第三方 API 接口。

当您创建后端时,不要为演示文稿定制它。是必须适应的演示文稿。

使用 ER 图在纸上创建模型,如果需要向导表单,可以使用以前的 Form Wizard 现在使用 Form tools https://django-formtools.readthedocs.io/en/latest/ 创建一组表单来收集和验证数据并在您的后端创建模型(复数)。

使用表单工具,您不需要使用 javascript。 formtools 允许您创建许多不同的表单以一起运行。每个表单都有自己的验证,但最后您有一个 done 函数来管理所有数据以创建您需要的内容。

您不需要 JS,但您可以使用适当的 JS 工具改善 UX(用户体验)。我暂时不会在意这些。您当前的问题是管理应用程序的设计,以及您以后可以处理的演示文稿。

【讨论】:

  • 感谢您在设计应用程序方面的第一行回答。这就是我犯的错误:我已经编写了 UI,现在我正在尝试定制后端。感谢您的回答,我会查看 ER 图并查看您提供的链接。
  • @Sukrab 很高兴有用。您认为这是您问题的正确答案吗?
猜你喜欢
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 2018-03-11
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 2013-08-08
相关资源
最近更新 更多