我想在我的视图中动态传递form_class
,以便单个视图可以完成所有工作。此外,我不想使用if条件,因为这不符合目的。
urls.py:
url(r'^(?P<form>[\w-]+)/$',BillCycleCreateView.as_view(),name='BillCycle'),
的观点:
class BillCycleCreateView(CreateView):
template_name = 'form-view.html'
success_url = '.'
def get_form_class(self):
print(self.kwargs)
x = self.kwargs['form']
print(x)
return x
以下代码引发str object is not callable
错误。有没有办法解决它或任何其他方式来达到预期的结果?我该怎么回课?
提前致谢!!
答案 0 :(得分:0)
您需要一个if语句将您从URL(示例中的变量x
)获得的字符串转换为实际的表单类。
答案 1 :(得分:0)
您可以这样做:
def get_form_class(self):
if self.kwargs['form'] == 'form_1':
return MyForm_1
elif self.kwargs['form'] == 'form_2':
return MyForm_2
else:
raise Exception('We have an unknown parameter in the url')
建议使用更好的异常消息。