2011-01-25 3 views
17

어쩌면 어리석은 질문 일 수도 있지만 webpy에서 http 상태 코드를 작성하는 방법을 모르겠습니다.Webpy : http 상태 코드를 300으로 설정하는 방법

문서에서 주요 상태 코드 유형 목록을 볼 수 있지만 상태 코드를 설정하는 일반적인 기능이 있습니까?

unAPI 서버를 구현하려고하는데 식별자가있는 요청에만 300 Multiple Choices으로 답장해야합니다. 더 많은 정보 here

고마워!

편집 : 난 그냥이 최선의 해결책이다

web.ctx.status = '300 Multiple Choices'

하고 web.ctx를 통해 설정할 수 있다는 것을 발견?

답변

18

web.py가 301 및 다른 리디렉션 유형에 대해 수행하는 방법은 web.HTTPError (다시 web.ctx.status)을 서브 클래 싱하는 것입니다. 예를 들면 :

class MultipleChoices(web.HTTPError): 
    def __init__(self, choices): 
     status = '300 Multiple Choices' 
     headers = {'Content-Type': 'text/html'} 
     data = '<h1>Multiple Choices</h1>\n<ul>\n' 
     data += ''.join('<li><a href="{0}">{0}</a></li>\n'.format(c) 
         for c in choices) 
     data += '</ul>' 
     web.HTTPError.__init__(self, status, headers, data) 

그리고 출력이 상태 코드 당신이 핸들러에서 raise MultipleChoices :

class MyHandler: 
    def GET(self): 
     raise MultipleChoices(['http://example.com/', 'http://www.google.com/']) 

그것은 물론, 특정 unAPI 응용 프로그램에 대한 조정이 필요합니다.

the source for web.HTTPError in webapi.py도 참조하십시오.

+0

이 방법은 일부 이미지를 프로그래밍 방식으로 제공하는 경우 304 수정되지 않음 작업을 수행합니다. –

관련 문제