微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django:如果访问网站的任何页面,请检查是否创建了会话密钥如果未创建

如何解决Django:如果访问网站的任何页面,请检查是否创建了会话密钥如果未创建

我正在按照一个使用JavaScript来添加购物车功能(大多数情况下,只是一个计数器)并存储产品ID的教程建立一个电子商务网站。

我想使用Django Sessions框架替换此功能

我不确定该怎么做,即当用户访问该网站时(无论在哪个页面上),如何将其设置为0?

这是我仅在主页上(当前)在当前基于类的视图上执行的操作:

# shop/views.py
from django.views.generic import TemplateView

from .models import *

# Create your views here.
class Home(TemplateView):
    """Home page with products list"""
    template_name = 'shop/home.html'

    def get_context_data(self,**kwargs):
        context = super().get_context_data(**kwargs)
        context['products'] = Product.objects.all()
   
        # Initialize cart if cart doesn't exist
        if not 'cart' in self.request.session:  # Maybe there's a better method to put this in
            self.request.session['cart'] = 0

        return context

如果它是基于函数的视图,我会这样写,但我更喜欢基于类:

def home(request):
    products = Product.objects.all()
    if not 'cart' in request.session:
        request.session['cart'] = 0
    return render(request,'shop/home.html',{'products': products})

我当然可以在每个视图上使用相同的代码,但这并不干燥。

有更好的方法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。