2014-06-26 34 views
0

将django _session_key作为特定会话的标识符存储在另一个模型中是个不错的主意。使用Django会话密钥在视图之间使用请求会话

我正在使用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通常不予理睬。

也请建议如何编写测试的意见

回答

2

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

+0

但是,这样做有什么问题,我从中得到了预期的结果。我不应该将会话实例保存在模型中吗? –