再利用可能なDjangoアプリになりたいと思っているものを書きましたが、投稿フォームの処理を柔軟にする方法については少し難問があります。ビューコードの簡略化されたバージョンは次のようになります。
def do_form(request, entity_id, template_name, success_url):
    form = MyForm(request.POST or None)
    if request.method =='POST':
        if form.is_valid():
            #do some business logic
            return HttpResponseRedirect(finished_url)
    return render_to_response(template_name, 
                              {'form': form},
                             context_instance=RequestContext(request))
JamesBennetsの本「PracticalDjangoProjects」のアドバイスに従ったので、url confでテンプレートと成功URLを構成できるようになりました。たとえば、私のurlconfは次のようになります。
urlpatterns = patterns('myapp.views',
          url(r'^do/(?P<entity_id>\d+)/$', 
          view = 'do_form',
          name = 'do_form_view',
          kwargs={'template_name':'form.html',
                    'success_url':'/finish/'},),
          url(r'^finish/$', 
          view = 'finish',
          name = 'finish_view')
)
/continue/<workflow_id>/これはすべて非常にうまく機能していますが、実際のアプリケーションでこれを使用するようになったとき、このフォームがワークフローの途中にあることに気付き、成功URLを次のようにしたいと思います。問題は、url confにハードコードされたURLしか含めることができず、do_formコードを押すたびにworkflow_idが変化することです。
誰かがこれを回避する方法を提案できますか?