Django如何创建不同的视图

时间:2014-09-09 09:31:21

标签: django

我在views.py文件中写了一些createview,就像UserCreateView,DeptCreateView一样。

class UserCreateView(CreateView):

    model = User
    form_class = UserForm
    template_name = 'add.html'
    success_url = '/member/'

    def get_initial(self):
        return { 'date': datetime.date.today }

class DeptCreateView(CreateView):
    model = Dept
    form_class = DeptForm
    template_name = 'add.html'
    success_url = '/member/'

我想添加一个MyCreateView来选择要添加的UserCreateView或DeptCreateView。

def MyCreateView(request):
    table = request.POST['table']
    create = { 'User': UserCreateView,
            'Dept': DeptCreateView,
            }
    p = create[str(table)].as_view()
    return HttpResponseRedirect(reverse(p))

我收到错误消息

  

使用参数'()'和关键字反转'oa.views.UserCreateView'   没有找到参数“{}”。尝试了0种模式:[]

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

根本不是这样做的方式。在您的调度字典中使用视图类没有任何意义。

相反,请为每个网址格式指定一个名称,并在反向调用中使用该模式:

url(r'/url/for/user_create', UserCreateView.as_view(), name='user_create')
url(r'/url/for/dept_create', DeptCreateView.as_view(), name='dept_create')

...

create = { 'User': 'user_create',
           'Dept': 'dept_create',
         }
p = create[table]
return HttpResponseRedirect(reverse(p))