为什么我无法从django获取json数据

时间:2014-09-22 09:08:42

标签: json django

我的环境是: 1.服务器是apache 2.4 2. python 3.3,django 1.6 3. windows

django的views.py:

import simplejson as json
from django.views.generic import View
from django.views.decorators import csrf_exempt
from django.contrib import auth
from django.http import HttpResponse

class LoginFormView(View):
    template_name = 'game/login.html'

    @csrf_exempt
    def dispatch(self, *args, **kwargs):
        return super().dispatch(*args, **kwargs)

    def get(self, request, *args, **kwargs):
        return render(request, self.template_name, {})

    def post(self, request, *args, **kwargs):
        if request.is_ajax():
            username = request.POST['input_username']
            password = request.POST['input_password']
            user = auth.authenticate(username=username,
                                     password=password)
            payload = {}
            if user is not None and user.is_active:
                auth.login(request, user)
                payload['msg'] = 'successful login'
            else:
                payload['msg'] = 'login failed'
            return HttpResponse(json.dumps(payload),
                                mimetype = 'application/json')
        else:
            return HttpResponse("Error: Request is not through ajax")

我的js文件是:

$(document).ready(function() {
    $('#submit_btn').bind('click', function(){
        $.ajax({
            url: "/game/login/",
            data: $('#login_form').serialize(),
            dataType: "json",
            type: "POST",
            success: function(data){
                console.info(data);
                //do some things
            }
        })
    })
})

我的问题是:     django可以获取用户名和密码,用户可以通过身份验证,我想将一些消息返回给客户端,但是js代码无法从django获取json数据,在firebug中,json数据包含一条记录{“状态”:"成功"}或{“状态”:"失败"},我不知道{“状态”:"成功&# 34;}来自,我无法获得自定义消息,firebug总是向我显示" undefined"。 Easyui的代码问题是什么?     我非常需要你的帮助!

1 个答案:

答案 0 :(得分:0)

我得到了答案。 原因是mod_wsgi的运行模式。 如果使用mod_wsgi的嵌入模式,django的代码保存在RAM中,目的是提高速度。所以一旦django的代码改变了,我们就必须重新启动apache的http服务。为了避免这种情况,我们可以使用mod_wsgi的deamon模式。