首页 > 解决方案 > 在 Django 3.0.5 中将匿名用户从一个视图传递到另一个视图

问题描述

我正在尝试创建一个完全匿名的调查,调查参与者进入一个登陆站点(index.html),单击一个链接并被定向到调查视图。在此调查 (pre_test.html) 页面上,我想分配一个具有主键的新参与者对象,并通过外键将其链接到调查模型。因为此调查不是我研究的主要部分,所以我想将该 Participant 对象发送到一个新视图,其中 Participant 主键再次用作链接到另一个模型的外键(称为任务)。

到目前为止,我在 views.py 中尝试过的是:

def pre_test(request):        
    if request.method == "POST":
        participant = Participants()
        participant.save()  
        participant_pk = participant.pk
        form = PreTestQuestionnaireForm(request.POST)
        if form.is_valid():  
            post = form.save(commit=False)
            post.save()
            post_primary = PreTestQuestionnaire(pk=post.pk)  
            post_primary.Analyst_id = Participants(pk=participant_pk)
            post_primary.save()  
            request.session['user'] = participant_pk
            return HttpResponseRedirect(reverse('main:picture_test'))  
    else:
        form = PreTestQuestionnaireForm()
    return render(request, 'study/pre_test.html', {'form': form})

def picture_test(request):
    obj = Participants(Unique_ID=request.session.get('user')) # Unique_ID is the pk I've set for Participants

但是当我调用时,print(obj)我得到的只是 Participants 对象(无)。我在使用会话时缺少什么?我应该根本不以这种方式使用会话,还是应该在另一个表中创建实际用户而不给他们密码和其他数据?保持用户匿名是必不可少的,我想尽可能避免使用 cookie,尽管我可以编写代码在每次会话后删除 cookie。

标签: djangodjango-modelsdjango-views

解决方案


我相信我找到了罪魁祸首。

我已经SESSION_COOKIE_SECURE=Truesettings.py文件中设置了,它会阻止 cookie 在 localhost 开发中正常工作,因此 usingrequest.session.get()不会返回任何内容。


推荐阅读