Ajax 不包含密钥的django请求

Ajax 不包含密钥的django请求,ajax,django,session,key,Ajax,Django,Session,Key,首先我要感谢你收看我的帖子! 我已经为一个企业项目使用django两个月了。我是一个在网络开发和django开发方面的法国noob:D 这是我的问题:在视图中,我在request.session中设置了一个键,但是在render\u to\u响应和ajax查询之后,这个键就消失了:( 这是我设置键的函数 def check(request): if request.method == 'POST': RequestContext(request) try: m =

首先我要感谢你收看我的帖子! 我已经为一个企业项目使用django两个月了。我是一个在网络开发和django开发方面的法国noob:D

这是我的问题:在视图中,我在request.session中设置了一个键,但是在render\u to\u响应和ajax查询之后,这个键就消失了:(

这是我设置键的函数

def check(request):
if request.method == 'POST':
    RequestContext(request)
    try:
        m = MsGnlMember.objects.get(mbr_nom=request.POST['username'])
    except (ObjectDoesNotExist):
        return render_to_response('login.html', {'BAD': True, 'username' : 'Unknown User'})
    if m.mbr_mdp == request.POST['mdp']:
Here ===>   request.session['MBR_INSTANCE'] = m

        return index(request)


def index(request):
username = request.session["MBR_INSTANCE"].mbr_nom
request.session.modified = True # does not fix my problem
getNote = GetNoteForm()
saveNote = SaveNoteForm()
search = SearchForm()
return render_to_response('index.html', {'FORM_GETNOTE' : getNote,
                                         'FORM_SAVENOTE' : saveNote,
                                         'FORM_SEARCH' : search,
                                         'USERNAME' : username},
                          context_instance=RequestContext(request))
这段代码运行得很好(index.html上的用户名会根据查询结果进行更改),但是当我在index.html页面上运行时,我会启动一个ajax查询,如下所示:

def arbo_get_acts(request):
if request.method == 'POST' and request.is_ajax():
    if "MBR_INSTANCE" in request.session:
        acts = MsWriAct.objects.filter(act_mbr=request.session['MBR_INSTANCE'])        
        acts_serialised = serializers.serialize('json', acts)
        return HttpResponse(acts_serialised, 'application/json')
    else:     
        acts_serialised = {}            
        return HttpResponse(acts_serialised, 'application/json')
我从来没有在我的if语句中输入:'(snif snif 所以请解释我做错了什么或我不明白什么


编辑:好的,各位,昨天我在家测试了我的代码,它运行得很好。在工作中它继续失败。经过漫长的旅程和艰苦的劳动,我发现了。当我想到这一点时,它发生了倾斜 “为什么它在家里工作而不是在工作中”。在家里我使用Linux,在工作中使用windows。。。。。。。。 第一次谷歌搜索: 这是我的耻辱: 基于文件的会话不在Windows上存储任何数据


当您更改会话时,您还需要在返回响应之前设置
request.session.modified=True

进一步资料:


编辑:好的,各位,昨天我在家测试了我的代码,它运行得很好。在工作中它继续失败。经过漫长的旅程和艰苦的劳动,我发现了。当我想到“为什么它在家工作而不是在工作中工作”时,它发生了倾斜.在家里我使用Linux,在工作中使用windows………首先谷歌搜索:这是我的耻辱:基于文件的会话不会在windows上存储任何数据


如何打发两天的开发时间

检查是否输入了arbo_get_acts函数。它是ajax,因此您无法直接看到服务器响应-在Firebug中检查它。这可能是一些CSRF验证问题。下面是回答我的输出:POST 200 OK 175ms jquery…min.js(ligne 18)En-têtesPost Réponse Content Length 0 Content Type application/json Date Fri,2012年1月13日14:59:54 GMT服务器WSGIServer/0.1 Python/2.7.2 Set Cookie sessionid=c531a3b804eb2c4d6bf591e826ac387d;expires=Fri,2012年1月27日14:59:54 GMT;Max Age=1209600;Path=/Vary CookieHmmm!HttpResponse应该返回任何内容,不是吗?可能是
请求。is_ajax()
返回False?请打印一些内容以调试请求和请求。session可能是。我从未在django中直接使用过session-因此,如果是这种情况,我无法帮助您。我在代码中做了一些研究。设置和获取session对象的方式与您对我的方式类似。即使在AJAX帖子中也是如此。我必须添加以下内容:通过CSRF validation-但如果没有它,服务器返回403,而不是像您的情况那样返回200。我使用这个ajax文档代码。我认为request.is_ajax没有问题,因为在使用会话之前,我只执行了一个MsWriAct.objects.all()在这个视图中,它工作得很好,但是现在我需要会话来处理失败的具体查询。我现在不在工作,我会在家里尝试做同样的事情,看看是否有效。你说你从来没有直接在django中使用会话,只是为了了解如何在django中使用会话?但是在我的设置中,我设置了session\u SAVE\u_请求=真