首页 新闻 会员 周边 捐助

为什么得不到django发送的json数据?

0
悬赏园豆:100 [已解决问题] 解决于 2014-09-22 21:13

先把本人的环境配置说一下:

    1.服务器使用的是apache 2.4;

    2.开发软件:python 3.3,django 1.6,前端jQuery+EasyUI;

django的views.py文件只有一个用于用户登陆的类

 1 import simplejson as json
 2 from django.views.generic import View
 3 from django.views.decorators import csrf_exempt
 4 from django.contrib import auth
 5 from django.http import HttpResponse
 6 
 7 class LoginFormView(View):
 8     template_name = 'game/login.html'
 9     
10     @csrf_exempt
11     def dispatch(self, *args, **kwargs):
12         return super().dispatch(*args, **kwargs)
13     
14     def get(self, request, *args, **kwargs):
15         return render(request, self.template_name, {})
16     
17     def post(self, request, *args, **kwargs):
18         if request.is_ajax():
19             username = request.POST['input_username']
20             password = request.POST['input_password']
21             user = auth.authenticate(username=username,
22                                      password=password)
23             payload = {}
24             if user is not None and user.is_active:
25                 auth.login(request, user)
26                 payload['msg'] = 'successful login'
27             else:
28                 payload['msg'] = 'login failed'
29             return HttpResponse(json.dumps(payload),
30                                 mimetype = 'application/json')
31         else:
32             return HttpResponse("Error: Request is not through ajax")

前端的js文件内容如下:

 1 $(document).ready(function() {
 2     $('#submit_btn').bind('click', function(){
 3         $.ajax({
 4             url: "/game/login/",
 5             data: $('#login_form').serialize(),
 6             dataType: "json",
 7             type: "POST",
 8             success: function(data){
 9                 console.info(data);
10                 //do some things
11             }
12         })
13     })
14 })

django能够得到前端发来的用户名和密码,用户认证可以通过,我想返回消息给前端,但前端的js代码始终无法获得django的json数据,用firebug调试可以看到,前端的得到的json数据包含一条{“status”: "success"}或者是{"status": "failure"},不知道这个数据是哪里来的,无法得到我自己构造的data.msg,总是提示undefined。

盼望大家能够给我解解惑,谢谢了!

自由的空气的主页 自由的空气 | 初学一级 | 园豆:114
提问于:2014-09-22 16:44
< >
分享
最佳答案
0

看不懂java。

大致的阅读,你可以:

1、跟踪json.dumps(payload)的内容

2、使用fiddler2之类的工具,看下请求的返回结果

3、确认是否有执行这个函数

收获园豆:100
519740105 | 大侠五级 |园豆:5810 | 2014-09-22 17:15
其他回答(1)
1

弄了半天,原来是mod_wsgi的问题,如果使用其内嵌模式,它是把代码载入驻留在内存中,以提高运行速度,因此没改动django的代码都必须重启一次apache的web服务,如果使用deamon模式则不需要如此。

自由的空气 | 园豆:114 (初学一级) | 2014-09-22 21:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册