瓶调试工具栏

时间:2014-03-31 00:48:59

标签: python bottle

我试图设置瓶子调试工具栏,但得到以下错误......

todo.py

import sqlite3
import bottle
from bottle_debugtoolbar import DebugToolbarPlugin
from bottle import route, run, debug, template, request, error, PasteServer

config = {'DEBUG_TB_ENABLED': True,
          'DEBUG_TB_INTERCEPT_REDIRECTS':True
                }

plugin = DebugToolbarPlugin(config)
bottle.install(plugin)

错误

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/bottle.py", line 862, in _handle
    return route.call(**args)
  File "/usr/local/lib/python2.7/dist-packages/bottle.py", line 1727, in wrapper
    rv = callback(*a, **ka)
  File "/usr/local/lib/python2.7/dist-packages/bottle_debugtoolbar/__init__.py", line 75, in wrapper
    return self.process_response(content)
  File "/usr/local/lib/python2.7/dist-packages/bottle_debugtoolbar/__init__.py", line 135, in process_response
    and bottle.response.headers['content-type'].startswith('text/html')
  File "/usr/local/lib/python2.7/dist-packages/bottle.py", line 1930, in __getitem__
    def __getitem__(self, key): return self.dict[_hkey(key)][-1]
KeyError: 'Content-Type'

1 个答案:

答案 0 :(得分:1)

bottle-debugtoolbar设置了assumption Content-type响应标头。

只需使用bottle.response设置响应内容类型:

from bottle import response
...

@bottle.route('/')
def index():
    response.headers['Content-Type'] = 'text/html; charset=UTF-8'
    ...

UPD:

这是一个简单的工作示例:

import bottle
from bottle_debugtoolbar import DebugToolbarPlugin
from bottle import response


config = {
    'DEBUG_TB_ENABLED': True,
    'DEBUG_TB_INTERCEPT_REDIRECTS': True,
}
plugin = DebugToolbarPlugin(config)
bottle.install(plugin)


@bottle.route('/')
def guestbook_index():
    response.headers['Content-Type'] = 'text/html; charset=UTF-8'
    return '<html><body>Hello, world</body></html>'

bottle.debug(True)
bottle.run(host='localhost', port=8082) 

希望有所帮助。