2012-12-02 4 views
0

오늘 django 1.4에서 폼 마법사를 사용하기 시작했습니다. 기능은 좋은 것으로 보이지만, 설명서에 의하면, 하나 개의 요구가 통과하는 form_list (및 condition_dict, 필요한 경우) (urls.py 수단)를 as_view 방법 대신 WizardViewdjango 폼 마법사 - urls.py가 아닌 views.py (WizardView 하위 클래스)에서 form_list 및 condition_dict 정의

이 수단의 서브 클래스를 제공하는 내에서 일부 논리를 작성하고보기 모듈이보기 논리를 담당해야하기 때문에 나는 장고 패턴에 대한 것이라고 믿는 views.py이 아닙니다.

나는 다음과 같이 결국했습니다

# views.py 
class MyWizard(SessionWizardView): 
    _form_list = (
     ('init', forms.MyWizardFormInit), 
     ('newuser', forms.MyWizardFormNewUser), 
    ) 
    _condition_dict = { 
     'newuser': lambda wizard: (wizard.get_cleaned_data_for_step('init') or {}).get('existing_user') == 'False' 
    } 

urls.py :

정말 바보과 말도 보이는
url(.., MyWizard.as_view(MyWizard._form_list, condition_dict = MyWizard._condition_dict)), 

. 의 올바른 선언 방법은 urls.py의 로직 선언을 막는 것입니까DRY을 유지 하시겠습니까?

views.py

my_wizard_view = MyWizard.as_view(MyWizard._form_list, condition_dict=MyWizard._condition_dict)) 

urls.py

나는 아직 WizardWiev을 사용하지 않은
url(r'^my_wizard/$', my_wizard_view, name='my_wizard') 

답변

3

약간 청소기 버전은 다음과 같을 수 당신은 url def를 통해 전달하지 않고 WizardView 서브 클래스 자체에서 이러한 속성을 설정해 보았습니다. 사정? 또는 WizardView.get_form 메소드 오버로드를 시도 했습니까?

+0

여전히 "정상적인"CBV보다 좋지는 않지만 조금 나아졌습니다.) 감사합니다! – migajek

0

:하지만,

+0

이들은 뷰 속성입니다 (폼 속성의 경우 BTW, get_form_kwargs가 있음). 문제는 많은 이상한 오류가 발생하는 것으로 WizardView의 하위 클래스에서 설정할 수 없다는 것입니다. django docs에 따르면 적절한 방법은 url config를 통해 전달하는 것입니다. 다시 말하지만, 이는 WizardView에만 적용되며 CBV의 "표준"동작을 손상시킵니다. 그래서 내가 그 질문을했다.) – migajek