django - 在 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。
解决方案
我相信我找到了罪魁祸首。
我已经SESSION_COOKIE_SECURE=True
在settings.py
文件中设置了,它会阻止 cookie 在 localhost 开发中正常工作,因此 usingrequest.session.get()
不会返回任何内容。
推荐阅读
- javascript - onmouseover 和 onclick 事件的工具提示功能
- vba - MS Access 运行时 3011 错误 - 变量范围
- python - 使用 Python Spark 数据框读取多行 json 字符串
- hyperledger-fabric - 如何为不同主机中的容器设置 fabric-sdk-go 的实体匹配器部分?
- makefile - 将 snappy-c 添加到 c++ 项目
- mysql - Count number of LineStrings in a MultiLineString MySQL
- python - Python海龟赛跑:去一个点然后转身
- gatling - 模块化加特林:如何在模拟之间模块化和传递值?
- seaborn - 如何解决 seaborn legend_out 无法与 catplot 或 relplot 一起正常工作的问题?
- sql - 如何计算 datetime2 部分的出现次数