Я получаю следующую ошибку из моего скрипта cherrypy, который создается модулем отправки.Python Cherrypy: 500 ValueError: Обработчики страниц ДОЛЖНЫ возвращать байты
ValueError: Обработчики страниц ДОЛЖНЫ возвращать байты. Используйте tools.encode, если вы хотите вернуть unicode
Я включил tool.encode в свой конфиг, но я все еще получаю эту ошибку. Я разрешаю пользователям загружать контент через плагин jQuery Form. Любые мысли о том, почему я получаю эту ошибку?
Вот мой CherryPy файл:
class Root(object):
@cherrypy.expose
def index(self)
return open('/home/joestox/webapps/freelinreg_static/index.html')
@cherrypy.expose
def submit(self, myfile):
cherrypy.session['myfile'] = myfile
data_name = myfile.filename
#Send back to JQuery with Ajax
#Put in JSON form
data_name= json.dumps(dict(title = data_name))
cherrypy.response.headers['Content-Type'] = 'application/json'
return data_name
cherrypy.config.update({
'tools.staticdir.debug': True,
'log.screen': True,
'server.socket_host': '127.0.0.1',
'server.socket_port': *****,
'tools.sessions.on': True,
'tools.encode.on': True,
'tools.encode.encoding': 'utf-8',
})
config = {
}
cherrypy.tree.mount(Root(), '/', config=config)
cherrypy.engine.start()
HTML:
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript' src='freelinreg_static/google.js'></script>
<script type='text/javascript' src='freelinreg_static/frontend.js'></script>
<script type='text/javascript' src='freelinreg_static/malsup.js'></script>
</head>
<body>
<form id="dataform" action="submit" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" id="myFile"/>
<input type="submit" id="data_submit" value="Continue"/>
</form>
</body>
</html>
JQuery (frontend.js):
$(document).ready(function() {
(function() {
$('#dataform').ajaxForm({
url: "submit",
success: function (data) {
var $a_var = data['title'];
$('body').append($a_var);
}
});
return false;
})();
});
Спасибо за отзыв! Имеет большой смысл! К сожалению, я все еще получаю то же 500 ValueError. –
Хорошо. Я обновил свой ответ с проверенным исправлением. –
Это сработало! В любом случае отправить данные обратно в jQuery в качестве JSON dict еще? Теперь jQuery, похоже, не понимает, что это JSON dict. –