当我尝试发布utf-8字符串(例如中文字符串)时,我遇到了django始终返回“500内部服务器错误”的问题。但我试着发一个ascii字符串,看起来还不错。此外,它在我自己的Archlinux机器上运行正常,但它无法在另一台CentOS服务器上运行。我该如何避免这个问题?
模板:
$(".palcesubm").click(function(){
var location = $('#detail_address').val()
$.post('/wechat/locate/select/create/',
{'location':location}, function(){
window.location = "/wechat/locate/baidu/";
})
});
视图:
@csrf_exempt
def create_location(request):
if request.method == 'GET':
return render_to_response('create_location.html')
else:
print request.POST.get('location')
request.session['location'] = request.POST.get('location')
return HttpResponse('success')
答案 0 :(得分:2)
您可能会收到UnicodeEncodeError,因为
request.POST.get('location')
返回一个unicode对象。当您尝试打印它时,Python会尝试使用' ascii'来编码它。编解码器失败,因为它包含非ascii字符。
如果您确实要打印,请使用:
print request.POST.get('location').encode('utf-8')
编辑:有关Python中编码的更多信息:https://docs.python.org/2/howto/unicode.html
答案 1 :(得分:0)
最后,我找到了解决这个问题的神奇方法。我只是在视图中注释print语句。但我仍然不确定其原因。