سؤال

Im trying to setup bottle debug toolbar but get the following error...

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)

Error

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'
هل كانت مفيدة؟

المحلول

bottle-debugtoolbar makes an assumption that Content-type response header is set.

Just set the response content-type using bottle.response:

from bottle import response
...

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

UPD:

Here's a simple working example:

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) 

Hope that helps.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top