Django Viewflow:流程启动时如何通过URL传递字段值?
如何通过启动URL向Django Viewflow流程传递参数?
当然可以通过启动URL的查询参数向Django Viewflow流程传递值,以下是具体实现步骤:
1. 自定义类启动视图获取URL参数
如果使用Viewflow的类视图启动流程,可继承默认启动视图并重写get_initial方法,从request.GET中提取URL参数并传入流程实例:
from viewflow import flow from viewflow.views import StartFlowMixin, ProcessFormView from .models import MyProcess # 你的流程模型,需包含note字段 class CustomStartView(StartFlowMixin, ProcessFormView): def get_initial(self): initial = super().get_initial() # 从URL查询参数中提取note值 note_param = self.request.GET.get('note') if note_param: initial['note'] = note_param return initial # 在流程定义中指定自定义启动视图 class MyProcessFlow(flow.Flow): process_class = MyProcess start = flow.Start(CustomStartView).Permission(auto_create=True) # 后续流程节点定义...
2. 函数式启动视图的处理方式
若采用函数式视图启动流程,可直接在视图函数中读取URL参数并赋值给流程实例:
from viewflow.flow.views import start_function from .models import MyProcessFlow @start_function def start_my_process(request, activation): # 提取URL中的note参数 note = request.GET.get('note') if note: activation.process.note = note activation.process.save() # 完成流程启动并跳转 return activation.redirect('/my_process/') # 流程定义中关联该函数视图 class MyProcessFlow(flow.Flow): process_class = MyProcess start = flow.Start(start_my_process).Permission(auto_create=True)
3. 注意事项
- 确保你的流程模型
MyProcess已正确定义note字段 - 可对获取到的
note参数做合法性校验(如过滤特殊字符),避免恶意输入 - 如果不需要用户查看或修改该参数,可跳过表单赋值步骤,直接在启动逻辑中写入流程实例
内容的提问来源于stack exchange,提问作者Tooblippe
相关产品推荐
相关产品推荐

