You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重写Django ViewFlow视图返回JSON:自定义模态UI遇调用异常

ViewFlow自定义UI模态框任务视图问题排查

我正在为ViewFlow实现自定义UI,目标是将各类任务以模态框形式展示。目前已完成初始启动视图的模态框展示及AJAX表单提交,但其他流程任务视图还未实现相同效果。我尝试重写AJAXDetailTaskView(DetailTaskView)来适配AJAX请求,但该视图似乎未被调用,现以启动详情视图为例排查问题(推测其他视图原理一致):

flows.py

class AssetFlow(Flow):

    process_class = models.AssetProccess
    task_class = models.AssetTask
    lock_impl = select_for_update_lock

    start = (
        flow.Start(
            views.StartView)
        .Permission(auto_create=True)
        .Next(this.co_approval)
    )

    co_approval = (
        flow.View(
            views.AssetView
        )
        .Next(this.finance_tc)
    )

...

views.py

from viewflow.flow.views.detail import DetailTaskView

class AJAXDetailTaskView(DetailTaskView):
    def render_to_response(self, context, **response_kwargs):

        if self.request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest':
            print('An AJAX request')
            return JsonResponse('Success', safe=False, **response_kwargs)
        else:
            print('Not an AJAX request')
            return super(AJAXDetailTaskView, self).render_to_response(context, **response_kwargs)

class StartView(StartFlowMixin, generic.UpdateView, flow.View):
    model = models.Item
    form_class = forms.AssetForm
    data = dict()
    detail_view_class = AJAXDetailTaskView

    def get_object(self):
        return self.activation.process.asset

    def get(self, request, *args, **kwargs):

        self.object = None
        form_class = self.get_form_class()
        form = self.get_form(form_class)

        context = self.get_context_data(form=form, data=self.data)
        html_form = render_to_string('asset/asset/partial_start.html',
                                     context,
                                     request=request,
                                     )
        return JsonResponse({'html_form': html_form})
        
...

内容的提问来源于stack exchange,提问作者dj.bettega

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:15:09