假设我有一个Web应用程序,在每个会话中显示2个随机按钮,我希望用户单击1按钮或另一个按钮。如果单击一个按钮,我想增加该按钮的分数。但是,用户无法控制每次显示的2个按钮,并且有数千个可能的按钮。
如果我创建一个视图来增加按钮,我怎么能确定用户不会通过浏览器手动转到该视图。
我的想法是你需要创建一个表单并让用户POST到某个地址,但是你怎么知道用户不只是通过AJAX发送一个帖子请求来增加按钮并且用户实际收到了带有2个按钮的随机会话中的那个按钮。
我如何在Django中处理这个文档,详细说明Django如何特别支持这个?
编辑:或者你必须为每个按钮选择会话创建一个唯一的会话ID,并检查每个按钮点击唯一的会话ID。
答案 0 :(得分:0)
创建会话变量以跟踪他们看到的按钮,例如:
def button_display_view(request):
# ...lots of cool logic
session['buttons_shown'] = [button_1_primary_key, button_2_primary_key]
return response
然后,在按钮单击视图中,确保单击的按钮位于显示的按钮列表中。用户将对会话变量一无所知,也无法对其进行编辑,就像他/她在使用会话变量来跟踪身份验证时不能进行编辑一样。
如果您正在构建多变量测试系统(甚至是AB测试系统),那么可能需要查看this MVT app的想法。