情况
我正在使用 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 可以接受任何参数(命名的或未命名的),您还可以提供一个回调函数,该函数由 request、*args 和 **kwargs 提供,并且应该返回一个传递给表单构造函数的字典。
从来源:
def validate(request, *args, **kwargs):
form_class = kwargs.pop('form_class')
extra_args_func = kwargs.pop('callback', lambda request, *args, **kwargs: {})
...
问题
- 如果有的话,分解此类 URL的好方法是什么?不必编辑插件源对我来说是件好事。