2009-06-24 4 views
3

간단한 장고 양식이 있습니다 :Django 양식 필드의 데이터를 뷰에서 어떻게 액세스 할 수 있습니까?

class testForm(forms.Form): 
    list = forms.CharField() 

    def getItems(self): 
    #How do I do this? Access the data stored in list. 
    return self.list.split(",") #This doesn't work 

목록 양식 필드는 csv 데이터 값을 저장합니다. 뷰의 testForm 외부 인스턴스에서 양식 필드에 저장된 .csv 값 목록을 볼 수 있어야합니다.

답변

1

django에서 일반적으로 폼 데이터를 가져 오기 위해 수행하는 작업은 다음과 같습니다.

form = testForm(request.POST) 
if form.is_valid: 
    # form will now have the data in form.cleaned_data 
    ... 
else: 
    # Handle validation error 
    ... 

데이터 형식이나 유효성 검사를 직접 수행하려면 양식의 유효성 검사 방법에 넣을 수 있습니다. 전체 양식 또는 양식 필드의 경우. 이것은 코드를 더 건조하게 만드는 좋은 방법이기도합니다.

0

여기에서 알아야 할 몇 가지 사항이 있습니다.

먼저 파이썬 클래스 메소드에서 'self'객체를 통해 속성에 액세스한다는 것이 일반적입니다. 따라서 이론적으로 함수는 다음과 같아야합니다 :

def get_items(self): 
    return self.list.split(",") 

그러나 장고 (Django) 형식의 경우에는 작동하지 않습니다. 이것은 필드가 자체의 값을 가지지 않기 때문입니다. 값은 필드가 렌더링 될 때 필드에만 첨부되며 값이 초기 데이터를 통해 적용되었는지 또는 데이터 사전에 전달되었는지에 따라 다른 방식으로 얻어집니다 .

당신이 ( form.is_valid()을 통해) 양식을 검증 한 경우

, 당신은 cleaned_data 사전을 통해 양식을 얻을 수 있습니다 : list 어떤 이유로 검증을 실패한 경우

return self.cleaned_data['list'] 

그러나이 실패합니다.

0

양식에서 is_valid를 호출 한 다음 cleaned_data 사전에 액세스하십시오.

2

이미 언급했듯이 양식의 cleaned_data 사전 특성과 is_valid 메서드를 사용해야합니다. 그래서이 같은 작업을 수행 할 수 있습니다

def getItems(self): 
    if not self.is_valid(): 
     return [] # assuming you want to return an empty list here 
    return self.cleaned_data['list'].split(',') 

작동하지 않는 방법은 양식 필드가 전형적인 인스턴스 변수 아니라는 것이다 이유. 희망이 도움이!