2011-01-02 11 views
1

私のdjango-pistonハンドラ関数では、基本的に2つのことができるようです。django-pistonでステータスコードが200以外のオブジェクトを返す方法は?

def create(...): 
    ...  
    resp = rc.BAD_REQUEST 
    resp.content = 'Some string error message' 
    return resp 

または私は指定されたエミッタに従ってフォーマットすることができるエラーmesssagesの辞書を返すが、ステータスコード200を有することができる:

私はいくつかの非フォーマットされたコンテンツを有する特定のステータス・コードを戻すことができるいずれか
def create(...): 
    ... 
    return error_dict 

指定したエミッタでフォーマットされた状態コードを使用して、辞書またはモデルオブジェクトを返すにはどうすればよいですか?

答えて

1

これを解決するために、私はBaseHandlerの私のサブクラスに新しい関数を追加しましたが、これはどんなハンドラにも追加することができます。この関数はエミッタを手動で呼び出してコンテンツを適切にフォーマットし、コンテンツタイプとステータスコードを追加します。

class MyBaseHandler(BaseHandler): 

    def render_response(self, request, response, content): 

     em_info = None 
     for ext in Emitter.EMITTERS: 
      if request.path.find('.'+ext) > -1: 
       em_info = Emitter.get(ext) 
     if not em_info: 
      return rc.NOT_FOUND 

     RequestEmitter = em_info[0] 

     emitter = RequestEmitter(content, typemapper, self, self.fields, False) 
     response.content = emitter.render(request) 
     response['Content-Type'] = em_info[1] 

     return response 
のように呼び出され

ので、この程度

def create(...): 
    ... 
    return self.render_response(request, rc.BAD_REQUEST, error_dict) 
4

どのように?

def create(...): 
    ...  
    resp = rc.BAD_REQUEST 
    resp.content = error_dict 
    return resp 
+0

これが確認されました。ありがとう。 – mjallday

関連する問題