【问题标题】:Insert request.session in class based Generic view in Django在 Django 中基于类的通用视图中插入 request.session
【发布时间】:2014-03-21 03:12:49
【问题描述】:

我正在尝试使用 request.session 创建一个“最近”会话密钥并添加用户访问的产品页面以使其在模板中可访问,这是我的观点,你们会推荐什么,我可以'似乎没有这样做

class ProductDetail(DetailView):
    model = Producto
    template_name = 'productos/product_detail.html'

    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super(ProductDetail, self).get_context_data(**kwargs)
        # Add in a QuerySet of featured products
        context['product_list'] = Producto.objects.filter(featured=True).exclude(pk=self.object.pk)
        return context

感谢您的帮助!

【问题讨论】:

  • 您到底遇到了什么问题?您可以在那里将项目添加到上下文中。你有什么问题?
  • 对不起,我不清楚,我似乎无法处理视图中的会话对象
  • 只是self.request.session

标签: python django session detailview


【解决方案1】:

感谢 Daniel Roseman 澄清如何从基于类的通用视图调用会话

class ProductDetail(DetailView):
    model = Producto
    template_name = 'productos/product_detail.html'

    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super(ProductDetail, self).get_context_data(**kwargs)
        if not 'recent' in self.request.session or not self.request.session['recent']:
            self.request.session['recent'] = [self.object.pk]
        else:
            recentList = self.request.session['recent']
            recentList.append(self.object.pk)
            self.request.session['recent'] = recentList
        # Add in a QuerySet of featured products
        context['product_list'] = Producto.objects.filter(featured=True).exclude(pk=self.object.pk)
        context['recent_list'] = Producto.objects.filter(pk__in=recentList)
        return context

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2018-05-14
    • 2016-08-06
    • 2014-10-12
    • 2011-10-04
    • 2012-02-21
    • 2013-04-02
    相关资源
    最近更新 更多