【发布时间】: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