我正在使用Django v1.9实现web-app
。我需要对网站进行部署和配置,以尽可能做到万无一失。
所以我想实现首次使用方案,它允许网站管理员通过网站本身配置网站。
显而易见的候选人是表单向导。
该网站需要配置几个资源。它可以包含每个资源的多个实例,但每个资源必须至少有一个实例。
因此,最小的首次使用序列可能是:
稍后,管理员需要为这些资源定义其他实例,上面的步骤1和2非常复杂,每个都需要保证自己的FormWizard
;特别是因为它们需要独立使用来配置每种资源类型的其他实例。
这意味着我的第一次使用场景实际上是
我的心告诉我,我应该能够以这种方式嵌套向导,获得良好的功能重用。 Django和Python一般都是DRY。
但是我还是试图弄清楚如何解决问题。我一直在谷歌上搜索并试验足够的时间来感受那里没有任何东西。
可以这样做吗?如果是这样,怎么样?
编辑:
试图澄清。假设每个向导都有一个与之关联的基于功能的视图
def AddResource1view(request):
# Display the pages of the wizard to build object 1
# for model Resource1
object1.save()
return object1
def AddResource2view(request):
# Display the pages of the wizard to build object 2
# for model Resource2
object2.save()
return object2
def FirstUseView(request):
config = SystemConfiguration()
config.r1 = AddResource1view(request)
config.r2 = AddResource2view(request)
# NOw step through the remaining pages of FirstUse wizard
# filling out config
...
config.save()
我的urls.py
会有指向三个视图中的每个视图的网址(通过FormWizard.as_view()
)因此您可以独立运行任一资源向导,也可以作为外部FirstUse向导的一部分运行。
显然,以上不是真正的代码 - 它只是通过嵌套来表达我的意思。