在Django中收集POST数据,存储到会话,然后重定向到原始页面

时间:2013-11-20 21:16:21

标签: ajax django django-views django-sessions

我正在寻找基于不断变化的主页建立网页。它将让用户回答问题,将他们的答案存储为会话的一部分(不希望用户登录)。然后,我希望能够根据他们的答案访问他们的答案,在主页上显示不同的内容。

目前这就是我所拥有的 -

## urls.py
from django.conf.urls import patterns, url

from home import views

urlpatterns = patterns('',
    url(r'^$', views.IndexView.as_view(), name='index'),
    url(r'^(?P<question_id>\d+)/(?P<choice_id>\d+)/$', views.DetailView.as_view(), name='detail')

用户访问索引 - 点击“回答”链接,我收到了question_id和choice_id。目前,我正在和他们打交道...

## from views.py
class DetailView(generic.ListView):
    template_name = 'home/index.html'
    context_object_name = 'homepage_object'

    def get_queryset(self):
        question_id, choice_id = self.request.path.replace('/', ':').split(':')[1:3]
        if 'history' not in self.request.session:
            self.request.session['history'] = [{question_id : choice_id}]
            self.request.session.modified = True
        else:
            self.request.session['history'].append({question_id : choice_id})
            self.request.session.modified = True
        product_set = random.sample(Product.objects.all(), 4)
        return product_set

所以基本上我只是向用户展示他们在主页上看到的内容,并且我可以存储他们的答案。然而,感觉就像是一个黑客,因为他们实际上是在一个完全不同的页面上,URL显示它(看起来很乱)。

我已经调查了帖子后面的重定向,但大多数都是以表单和用户身份验证为中心,因此有特殊的方法围绕它们。

这样做有明智的方法吗?是否有一个整洁的单行程序,它将处理我感兴趣的参数并让用户保持在同一页面上。有点像AJAX的方式,但我不想开始调查与我喜欢使用的Django会话有多好。

谢谢,

马特

1 个答案:

答案 0 :(得分:0)

最后,我采用了AJAX的方式。

我对AJAX和Django Sessions不能很好地融合在一起的所有担心都被消除了,页面现在可以正常工作。

如果有其他人遇到此问题并且发现非AJAX解决方案,请保持问题公开且无人接听。