2014-09-09 4 views
0

UserCreateView, DeptCreateView처럼 내 views.py 파일에 일부 createview를 씁니다.Django 다른보기를 만드는 방법

추가 할 UserCreateView 또는 DeptCreateView를 선택하려면 MyCreateView를 추가하고 싶습니다.

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

오류 메시지는 무언가가 당신의 URL에 이상이 있음을 나타냅니다. url.py에 언급 된 URL을 추가 했습니까? 이름이 리버스와 일치합니까? –

답변

1

전혀 방법이 아닙니다. 디스패치 사전에 뷰 클래스를 사용할 필요는 없습니다.

대신, 각 URL 패턴에 이름을 지정하고 역 호출에 그것을 사용

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)) 
+0

[mixin 문서] (https://docs.djangoproject.com/ko/1.7/topics/class-based-views/mixins/#an-alternative-ko/)의 다른보기를 통해 디스패치하는 하나의보기를 가질 수도 있습니다. 더 나은 해결책) (약간 다른 상황에서). –

+0

대단히 고맙습니다. 오류는 이미 오랫동안 저를 혼란스럽게합니다. – nnic

관련 문제