使用Django会话密钥来使用视图之间的请求会话

时间:2014-06-26 12:54:59

标签: python django session django-sessions

将django _session_key存储在另一个模型中作为特定会话的标识符是一个好主意。

我正在使用django _session_key在视图中存储一个唯一的会话,然后我将_session_key保存在另一个对象中。

def myview(request):

    if request.method == "POST":
        myform = Myform(request.form)

        if myform.is_valid():
            name = myform.cleaned_data['name']
            title = myform.cleaned_data['title']
            author_session = request.session._session_key
            # Creating a model object
            model1(name=name, title=title, author_session=author_session).save()

            return HttpResponseRedirect(reverse('myview2', 
                                                 kwargs={'name':model1.name}))
        else:
            # Some renders
    else:
        # Some other renders

def myview2(request, name):

    obj1 = model1.objects.get(name=name)

    if request.session._session_key == obj1.author_session:
         # Some render
    else:
         # Some other render

现在,我认为将_session_key用作不同视图之间会话的唯一标识是个好主意。有没有其他方法可以识别视图之间的唯一会话?

P.S-我读过使用_session_key通常被忽视。

另外,请建议如何为视图之间的会话编写测试

1 个答案:

答案 0 :(得分:2)

不,这完全是倒退。您应该在第一个视图中将model1实例的键存储在会话中,并在第二个视图中将其存取。