Django回归" 500内部服务器错误"当$ .post一个utf-8字符串

时间:2014-10-25 14:01:43

标签: jquery django

当我尝试发布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')

2 个答案:

答案 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语句。但我仍然不确定其原因。