我是django和python的高级初学者。我正在编写一个应用程序来处理会议的注册和摘要提交,我正在尝试使用基于类的视图。用户通过电子邮件发送链接,其中包含其在网址中的注册码。从这个网址开始,用户可以浏览一系列收集所有必要信息的视图。
复杂性来自这样一个事实,即用户经常会中途停止,然后想要在几天或几周后完成该过程。这意味着它们可能会从当前页面继续,也可能只是单击该原始链接。此外,几周后他们可能已经错过了某些截止日期,因此,例如,他们不能再提交摘要(但他们仍然可以注册)。在此过程中,他们检查或取消选中了各种选项,这些选项也会影响他们应该通过应用程序的路径。
我的问题是:放置逻辑的最佳位置在哪里确定用户当前是否被允许查看该页面,如果没有,最好的网址也可以重定向?我以为我会创建一个自定义视图类,例如,覆盖调度方法以包括全局检查(例如,会议注册是否打开?),然后子类可以添加额外的检查(例如,用户是否输入了所有必要的信息?她的摘要?)。我遇到的问题是检查以错误的顺序运行(我希望先运行基类检查)。然后我开始研究自定义视图装饰器或自定义中间件。在这一点上,我意识到我可以使用一些专家建议采取哪种方法。 (如果重要的话,我不使用django身份验证系统。)先谢谢。
答案 0 :(得分:0)
也许form wizard可以帮助您管理查看序列。
通常django greybeards提倡在Models
中保持行方式逻辑,在Managers
中保持逐表逻辑,因此将复杂视图逻辑保留在主视图类中似乎是合适的。
向导类可以帮助维护视图的顺序,但是为了恢复过时的会话,您可能需要进行一些模型保存(这可能会非常快速地变得太复杂)或者一些cookie处理。
过去,当出现类似情况时,我采用了最简单的路线并将用户注册和用户想要执行的任务(事件注册)分开。用户注册一次但是如果他们弄乱了事件注册,他们只需要在以后重新登录并再次执行(他们的麻烦 - 不是你的!)。