簡體   English   中英

Cherrypy和內容類型

[英]Cherrypy and content-type

我有一個cherrypy應用程序,並且試圖更改響應標頭的Content-type。 我正在嘗試使用cherrypy.response.header ['Content-Type'] ='text / plain'。 不幸的是,我仍然得到'text / html'。 我想為ok請求設置一種內容類型,為錯誤消息設置另一種內容類型。 更改內容類型的唯一方法是使用裝飾器。 但是這個方法的設置類型,我需要更改它。 您知道哪里可能有問題嗎? 我的配置:

config = {
    '/': {
        'request.dispatch': cherrypy.dispatch.MethodDispatcher(),
        'tools.response_headers.on': True,
        'tools.response_headers.headers': [('Content-Type', 'text/html')],
    }
}



def GET(self, id):
   cherrypy.response.headers['Content-Type'] = 'application/x-download'
   somecode
   if res < None:
       cherrypy.response.headers['Content-Type'] = 'text/plain'           
       cherrypy.response.status=404

GET._cp_config = {'response.stream': True}
def stream():
def decorate(func):
    def wrapper(*args, **kwargs):
        name = time.strftime("%Y%m%d-%H%M%S")
        cherrypy.response.headers['Content-Type'] = 'application/x-download'
        cherrypy.response.headers['Content-Disposition'] = 'attachment; filename="' + name + '.txt"'
        cherrypy.response.headers['Transfer-Encoding'] = 'chunked'
        return func(*args, **kwargs)
    return wrapper
return decorate



  @cherrypy.expose
  class Network:
@stream()
def GET(self, id):
    source = my_generator()
    for i in source:
        if res < None:
            cherrypy.response.headers['Content-Type'] = 'text/plain'           
            cherrypy.response.status=404
            break
        yield bytes(i)

GET._cp_config = {'response.stream': True}

好的,還有更復雜的代碼,在前面的注釋中有cherrypy的配置。 我有一個生成器,它生成一些數據,並將文件中的數據流傳輸到客戶端。 我知道,肯定有更好的解決方案。 想象一下,在res變量中,保存到db是結果。 問題是,這完全忽略了if條件下的設置。 它仍在返回文件(空)。 裝飾器是設置內容類型的唯一方法,這就是它在那里的原因

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM