django KeyError문제 질문드립니다

조회수 905회

현재 장고를 이용해 파일 url과 비디오fps 값, 비디오 scale값을 브라우저에서 받는 기능을 구현하고 있습니다.

문제는 프론트의 axios를 통해 3개의 값을 dictionary형태로 받고 form을 통해 유효성 검사를 하려고 cleaned_data를 할때 문제가 발생합니다.

세개의 값이 models.py form.py에서 똑같은 조건인데 url만 key값을 찾고 나머지는 form으로 넘어오지 못하고 NoneType이 됩니다.

어떻게 하면 나머지 fps값과 scale값도 key오류 없이 cleaned_data작업을 할수 있을까요?

# 프론트에서 값을 딕셔너리 형태로 넘겨주는 js코드입니다.
var sendURL = {'uploadURL': vm.inputURL,  'URL_fps_value': vm.URL_settings.URL_fpsValue, 'URL_scaleValue_select': vm.URL_settings.URL_scaleValue_select };
axios.post('/convert/urlupload/', sendURL)
...
# views.py파일 입니다.
    if request.method == 'POST':
        form = UploadURLForm(json.loads(request.body))
    #json.loads(request.body) == {'key1': value1, 'key2': value2, 'key3':value3} 
    # 프론트에서 폼데이터가 아닌 딕셔너리로 넘겨줬기때문에 request.body를 사용하였습니다.
        if form.is_valid():
            valid_url = form.clean_uploadURL()
            url_scale = form.cleaned_data['URL_scaleValue_select']
            url_fps = form.cleaned_data['URL_fps_value']
# forms.py파일 입니다.
    class Meta:
        model = UploadURLmodel
        fields = ['uploadURL', 'URL_fps_value', 'URL_scaleValue_select']

    def clean_uploadURL(self):
        print("this is form")
        uploadURL = self.cleaned_data['uploadURL']
    # KeyError: 'URL_fps_value' 가 발생합니다
        file_fps = self.cleaned_data['URL_fps_value']
        file_scale_value = self.cleaned_data['URL_scaleValue_select']
# models.py 파일입니다.
class UploadURLmodel(models.Model):
    uploadURL = models.URLField(blank=False, null=False)
    URL_fps_value = models.IntegerField(blank=False, null=False)
    URL_scaleValue_select = models.CharField(blank=False, null=False, max_length=15)
    fileFromURL = models.FileField(blank=True, upload_to='urlmedia/%Y/%m/%d/')

++(수정) 폼이 모델폼인데 혹시 딕셔너리 형식으로 파라미터 값을 넣을때 따로 해줘야 하는 것이 있나요? 분명히 딕셔너리로 폼에 잘 넘겨 주었는데 url값만 받는 상황입니다.

+++(수정) views.py에서 is_valid()함수가 forms.py clean_uploadURL()함수 까지 진행이 되어서 이런 문제가 발생하는 것 같습니다. 원래 is_valid()함수가 작동 할 때 forms.py 안의 함수까지 같이 실행되나요?

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)