2012-07-16 3 views
0

데이터가 POST 일 것으로 예상되며 게시 된 내용을 기반으로 양식을 만들 때 사용할 사용자 지정 사전을 만들고 싶습니다. POST 데이터에있는 내용을 비교하려고 할 때 문제가 발생하는 것 같습니다. 나는 Ubuntu 12.04에서 Django 1.4와 Python 2.7을 함께 사용하고 있습니다.Django POST 데이터 비교

POST 필드에 return_method이라는 필드가 있다고 가정하면 클라이언트가 예상하는 반환 방법의 유형을 알 수 있습니다. 값을 post 또는 get으로 보냅니다. 자, 내가 얻는 가치에 따라 다르게 사전을 만들고 싶습니다.

if (request.POST.get('return_method') == 'get'): 
    cust_dict = { 'key1' : value1, 
        'key2' : value2, 
        'key3' : value3, 
       } 

elif (request.POST.get('return_method') == 'post'): 
    cust_dict = { 'key1' : value1, 
        'key2' : value2, 
        'key3' : another_value, 
       } 

이것은 작동하지 않습니다. get 필드를 채우는 중이며 어느 사전도 생성되지 않습니다.

내가 대신 무엇을 제안하겠습니까?

편집 : 제 문제는 내 변경 사항이 장고 서버에서 업데이트되지 않는 것입니다. key3이 추가되지 않는 경우

답변

1

여기에 내가 그것을 접근하는 것이 방법입니다.

custom = { 
    "get" : { 
    'key1' : value1, 
    'key2' : value2, 
    'key3' : value3, 
    }, 

    "post" : { 
    'key1' : value1, 
    'key2' : value2, 
    'key3' : another_value, 
    }, 
} 

try: 
    cust_dict = custom[request.POST.get('return_method').strip()] 
except KeyError: 
    # .. handle invalid value 

그렇다면 버전이 작동하지 않을 이유가 없습니다. request.POST.get('return_method')에 표시되는 값을 확인 했습니까? 문자열에 일치하는 값에 공백이있을 수 있습니다 (위의 예제 코드에서 .strip()을 참조하십시오).

+0

이 솔루션을 좋아합니다. 고맙습니다. – Rico

+0

안녕, 리코. –

1
cust_dict = { 'key1' : value1, 
       'key2' : value2, 
      } 


if request.POST.get('return_method') == 'get'): 
    cust_dict['key3'] = value3 
elif request.POST.get('return_method') == 'post): 
    cust_dict['key3'] = another_value 

(아파치를 다시 시작했다) 당신의 cust_dict 다음 return_method의 가치도 getpost