【问题标题】:Gather POST data in Django, store to session and then redirect to the original page在 Django 中收集 POST 数据,存储到会话,然后重定向到原始页面
【发布时间】:2013-12-05 02:39:24
【问题描述】:

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

目前这就是我所拥有的 -

## 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

所以基本上我只是向用户展示他们在主页上看到的确切内容,而且我能够存储他们的答案。但是,这感觉有点像 hack,因为它们实际上位于完全不同的页面上,并且 URL 显示了它(看起来很乱)。

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

有没有一种明智的方法来做到这一点?是否有一个简洁的单行程序可以处理我感兴趣的参数并使用户保持在同一页面上。有点想走 AJAX 的路,但不想开始研究它与 Django 会话的效果如何,我喜欢使用它。

谢谢,

马特

【问题讨论】:

    标签: ajax django django-views django-sessions


    【解决方案1】:

    最后我用这个走了AJAX的路。

    我对 AJAX 和 Django 会话不能很好地协同工作的所有恐惧都得到了缓解,页面现在可以正常工作了。

    如果其他人遇到此问题并找到非 AJAX-less 解决方案,则将问题悬而未决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多