我想创建一个获取表单类型(来自forms.py)并将其呈现为html的通用视图。 我需要不同的网址将通过不同的形式。假设我在forms.py中有form1和form2类,我需要将表单传递给 urlpatterns ,如下所示:
urlpatterns = [
url(r'^form_test1/$', views.generic_form, name='form_test', form_type = forms.form1()),
url(r'^form_test2/$', views.generic_form, name='form_test2', form_type = forms.form2()),
]
可以制作吗?如果没有,我怎样才能达到所需的泛型。
谢谢!
答案 0 :(得分:2)
实际上你可以使用url()
的第三个位置参数作为传递给视图的额外参数的字典:
url(r'^form_test1/$', views.generic_form, {'form_type': forms.form1}, name='form_test'),
请注意,您应该将类而不是实例传递给视图;并记住视图需要接受form_type
作为参数。
但是我真的会说这是错误的做法。这样的事情属于视图本身。相反,捕获一个参数并在视图中执行逻辑:
url(r'^form_test(?P<form_id>\d+)/$', views.generic_form, name='form_test'),
...
FORMS = [ forms.form1, forms.form2 ]
def generic_form(request, form_id):
FormClass = FORMS[form_id]
或使用字典,无论命名方案有意义。