2014-09-02 5 views
0

문제는 ...이 라인 :WSGI : 첫 번째 단계에서 쿠키를 검색 할 수 없기 때문에 쿠키를 설정하고 검색 할 수 없습니다.

x = cookie['r'].value 

는 이름을 "R"로 쿠키를하고 싶어하지만 그것이 아직 설정되어 있지 않은 경우 할 수 있기 때문이다.

스크립트가 오류를 일으키지 않도록 설정해야합니다. 그래서 아마도 두 번째 다시로드 할 때 쿠키를 얻을 수 있습니다. 그러나 그것을 거부하고 있습니다.

import Cookie 
cookie = Cookie.SimpleCookie() 

def application(environ, start_response): 

    cookie.load(environ['HTTP_COOKIE']) 

    t = 'r=rrrr' 

    headers = [('Set-Cookie', t),('Content-type', 'text/plain')] 

    start_response('200 OK', headers) 
    x = cookie['r'].value 

    yield str(x) 

은 기본적으로 내가 그것을 쿠키를 얻을 수없는 경우에도 어떤 문제가 발생하지에

x = cookie['r'].value 

말할 필요가있다.

답변

0
x = cookie.get('r') and cookie['r'].value 

실제로 시도하지 않았습니다 (WSGI를 사용하지 않아도 됨). 그러나 이는 사전 형 객체의 표준 패턴입니다.

사전에get은 사전에 키가 존재하지 않으면 None을 반환합니다. (0과 빈 문자열 및 빈 목록과 같은)이 "거짓"인 경우 첫 번째 값을 반환하여 "단락"하고 첫 번째 값이 "사실"이면 두 번째 값을 반환합니다.

따라서 "r"이라는 쿠키가 없으면 cookie.get('r')None을 반환하고 프로세스는 여기서 멈추고 x에는 None 값이 할당됩니다. 쿠키가있는 경우 cookie.get('r')을 반환합니다. 따라서 cookie['r'].value이 평가되고 x에 결과가 할당됩니다.

+0

뭔가를 찾지 않아도 만족할 수 있는지 묻고 있습니다. –

+0

"r"이라는 쿠키가 없으면'x'는 None으로 설정됩니다. 그게 네가 원하는게 아니야? – Malvolio

+0

나는 볼 수 있겠다. 나는 그것을 시도 할 것이다 –

관련 문제