2016-10-25 1 views
0

장고 1.10.2를 사용하고 있습니다. 뷰에서 django request.POST.getlist [my_list ', 없음] 존재하지 않는 키의 경우 []를 반환합니다.

, 내가 없음이 non_existent 키에 대해 반환하지 않으며, 빈리스트가 전송 될 때 [] 반환 기대 아래 복귀 []

print(request.POST.getlist('collected_already', None)) 
    print(request.POST.getlist('collected_already[]', None)) 
    print(request.POST.getlist('non_existent', None)) 
    print(request.POST.getlist('non_existent[]', None)) 

.

제 해결 방법은 [] 대신 [blank]를 보내고 검색하는 것입니다.

나는 포인터를 고맙게 생각하고있다. 최고의 소망과 함께, 앤디.

답변

0

getlist()는 기본 인수를 없음으로 취하고 키를 찾을 수없는 경우 빈 목록 []을 반환한다고 생각합니다.

Check this

는 파이썬 목록으로, 요청 된 키를 사용하여 데이터를 돌려줍니다. 키가 존재하지 않고 기본값이 제공되지 않은 경우 비어있는 목록을 반환합니다. 제공된 기본값이 목록이 아닌 경우 일종의 목록을 반환하도록 보장됩니다.

+1

당신이 링크 한 문서는'getlist' *는 선택적인 기본 인자를 취합니다. 문제는'default = None'은 'no default specified'로 취급된다는 것입니다. – Alasdair

+0

예. 수정 됨. – Kishan

1

getlist은 기본적으로 빈 목록 []을 반환합니다. default=None을 전달하면 '기본값이 없음'이 아니라 '기본값이 지정되지 않음'으로 처리됩니다.

빈 목록 []None으로 강제 변환하려는 경우 or None을 표현식 끝에 간단히 추가 할 수 있습니다.

print(request.POST.getlist('collected_already') or None) 

이것은 파이썬이 boolean expressions을 평가하는 방식으로 인해 작동합니다. xy이 모두 False로 평가되는 경우 x or yy을 반환합니다.

관련 문제