我在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种模式:[]
提前感谢您的帮助。
答案 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))