gpt4 book ai didi

django - 在 viewflow.frontend 之外处理 View

转载 作者:行者123 更新时间:2023-12-05 03:09:38 28 4
gpt4 key购买 nike

我想在标准之外集成流程、启动它们等 viewflow.frontend .为此,我一直在尝试创建一个简单的页面,在那里我可以开始一个新的流程,但一直在努力寻找一种方法来实现它。

一种方法是定义一个 url 到 url('^start_something, CustomStartView.as_view())CustomStartView子类化 CreateProcessView来自 viewflow.flow.views.start .每当我修复一个错误时,这都会导致一个又一个错误。我现在很确定这不是正确的方法,也是因为 View用作 Flow 的参数类本身,可能需要以不同于普通 View 的方式使用。

正确的做法是什么?

最佳答案

Viewflow View 需要通过flow_classflow_task 实例进行参数化。因此,您可以包含一个开始 View ,如下所示:

url('^start/', CreateProcessView.as_view(), {
'flow_class': MyFlow,
'flow_task': MyFlow.start})

要添加任务 View URL 配置,您需要使用 process_pktask_pk 参数

url('^(?P<process_pk>\d+)/approve/(?P<task_pk>\d+)/', ApproveView.as_view(), {
'flow_class': MyFlow,
'flow_task': MyFlow.approve
})

对于每个节点,您还可以启用详细信息和各种操作 URL,例如:

url('^(?P<process_pk>\d+)/approve/(?P<task_pk>\d+)/detail/', DetailTaskView.as_view(), {
'flow_class': MyFlow,
'flow_task': MyFlow.approve
}),
url('^(?P<process_pk>\d+)/approve/(?P<task_pk>\d+)/cancel/', CancelTaskView.as_view(), {
'flow_class': MyFlow,
'flow_task': MyFlow.approve
}),

所有这些都很麻烦。

推荐方式

您可以只包含 Flow.instance.urls,它包含收集的所有 URL 并准备好包含到 URL 配置中。

url('^myflow', include(MyFlow.instance.urls, namespace='myflow'))

最后,要启用任务 ListView ,您可以手动输入 URL,例如

url('^myflow/inbox/', TaskListView.as_view(), {
'flow_class': MyFlow}, name="tasks")

或者只用作 viewflow.flow.viewset.FlowViewSet

myflow_urls = FlowViewSet(MyFlow).urls

urlpatterns = [
url(r'^myflow/', include(myflow_urls, namespace='myflow'))
]

这是将 View 流 URL 包含到 Django URL 配置中的推荐方法。要自定义该 URL 配置中使用的 View ,您可以子类化 FlowViewSet 类并在节点定义中提供 View ,例如

class MyFlow(Flow):
start = flow.Start(detail_view_class=MyDetailTaskView)

有关示例用法,您可以查看 Viewflow 自定义 UI 说明书示例 - https://github.com/viewflow/cookbook/tree/master/custom_ui

关于django - 在 viewflow.frontend 之外处理 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42277033/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com