2014-02-20 29 views
1

我試圖使用request.session來創建'最近的'會話密鑰並添加用戶訪問的產品頁面,使其在模板中可訪問,這裏是我的看法,你會你們推薦,我似乎無法去這樣做在基於類的Django通用視圖中插入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 

感謝您的幫助!

+0

究竟是什麼,你有問題?您可以使用該方法將項目添加到上下文中。你的問題是什麼? –

+0

對不起,我不清楚,我似乎無法得到視圖內的會話對象的句柄 – javiercf

+1

它只是'self.request.session'。 –

回答

0

感謝丹尼爾·羅斯曼爲澄清如何調用從類基於會話的通用視圖

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 
相關問題