先把本人的环境配置说一下:
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。
盼望大家能够给我解解惑,谢谢了!
看不懂java。
大致的阅读,你可以:
1、跟踪json.dumps(payload)的内容
2、使用fiddler2之类的工具,看下请求的返回结果
3、确认是否有执行这个函数
弄了半天,原来是mod_wsgi的问题,如果使用其内嵌模式,它是把代码载入驻留在内存中,以提高运行速度,因此没改动django的代码都必须重启一次apache的web服务,如果使用deamon模式则不需要如此。