状況
私は 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を素因数分解する良い方法は何ですか? プラグインのソースを編集する必要がないことは、私にとって良いことです。