有没有办法在Django中使用url动态地将formclass添加到视图中?

2024-09-28 05:21:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在我的视图中动态地传递form_class,这样一个视图就可以完成所有的工作。另外,我不想使用if条件,因为那样做不起作用

url.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。有没有办法解决这个问题,或者有没有其他办法达到预期的效果?我怎么还课

提前谢谢


Tags: namepyselfformview视图urlif
2条回答

需要使用if语句将从URL(示例中的变量x)获得的字符串转换为实际的form类

你可以这样做:

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')

建议使用更好的异常消息

相关问题 更多 >

    热门问题