1

状況


私は Django プラグインdjango-ajax-validationを使用しています。これは、jQuery で AJAX フォームを構築するときにフォームの検証を処理します。

基本的に、それはそれが言うことをします。ただし、アプリケーションにさらに多くのフォームを実装したいので、AJAX 要求用にいくつかの URL が必要です。今のところ、私のajax/urls.py内容は次のとおりです。

urlpatterns = patterns('ajax_validation.views',
    url(r'^validate/foo$', 'validate', {'form_class':FooForm}, name='validate-form-foo'),
    url(r'^validate/bar$', 'validate', {'form_class':BarForm}, name='validate-form-bar'),
)

しかし、これは私には見苦しく、維持するのは非常に困難です。これが私がやりたいことです:

FORMS = {
    'foo': FooForm,
    'bar': BarForm,
}

urlpatterns = patterns('ajax_validation.views',
    url(r'^validate/(?P<label>[^/]+)$', 'validate', {'form_class':FORMS[label]}, name='validate-form'),
)

しかし、明らかにうまくいきません。

何が役立つか


ドキュメントから:

URL は任意の引数 (名前付き、または名前なし) を取ることができ、コールバック関数を提供することもできます。この関数には、リクエスト、*args、および **kwargs が与えられ、フォーム コンストラクターに渡される辞書を返す必要があります。

ソースから:

def validate(request, *args, **kwargs):
    form_class = kwargs.pop('form_class')
    extra_args_func = kwargs.pop('callback', lambda request, *args, **kwargs: {})
    ...

質問


  • ある場合、そのような URLを素因数分解する良い方法は何ですか? プラグインのソースを編集する必要がないことは、私にとって良いことです。
4

1 に答える 1