首页 > 其他分享 >Django管理后台访问和登录页面访问数据不一致的问题

Django管理后台访问和登录页面访问数据不一致的问题

时间:2023-09-10 21:24:04浏览次数:41  
标签:product get request cart 购物车 访问 pk Django 页面

Django管理后台访问和登录页面访问数据不一致的问题

问题现象

我再创建商品购物车功能后,发现这个功能页面需要放在管理后台。在测试功能时是直接配置路由访问http://localhost:8088/view_cart/是可以正常加载购物车的相关功能的,然后将购物车功能加到管理后台,添加之后发现没有查到任何数据。通过http://localhost:8088/view_cart/可以查看到购物车相关商品信息,通过http://localhost:8088/admin/goods_service/cart/查看为空。

代码配置

urlpatterns = [
    path('view_cart/', view_cart, name='view_cart'),
]

def add_to_cart(request, pk):
    product = get_object_or_404(Product, pk=pk)
    cart = request.session.get('cart', {})
    cart[pk] = cart.get(pk, 0) + 1
    request.session['cart'] = cart

    messages.success(request, f'{product.name}已添加到购物车')
    return redirect('list_product')


问题分析

通过路由直接访问可以访问购物车视图,而通过管理后台访问不到,那么就是获取数据源不一致的问题导致的。

从这个角度分析,然后Google了一下,就发现管理后台和正常视图访问的session不是同一个,就会出现这个问题。为了解决这个问题,我将数据保存到数据库进行处理,经过验证后台管理系统可以获取到购物车的信息了,再次的爬过一个坑。

解决方案

同时向会话和数据库中添加该数据,解决改问题。

def add_to_cart(request, pk):
    product = get_object_or_404(Product, pk=pk)
    #数据保存在session中
    cart = request.session.get('cart', {})
    cart[pk] = cart.get(pk, 0) + 1
    request.session['cart'] = cart

    # 将商品添加到数据库的购物车表中
    cart_item, created = Cart.objects.get_or_create(user=request.user, product=product)
    if not created:
        cart_item.quantity += 1
    else:
        cart_item.quantity = 1
    cart_item.save()

    messages.success(request, f'{product.name}已添加到购物车')
    return redirect('list_product')

 

标签:product,get,request,cart,购物车,访问,pk,Django,页面
From: https://www.cnblogs.com/weiweirui/p/17691953.html

相关文章

  • 纯前端也可以访问文件系统!
    前言周末逛github的时候,发现我们只需要在github域名上加上1s他就能够打开一个vscode窗口来阅读代码,比起在github仓库中查看更加方便然后我就想网页端vscode能不能打开我本地的项目呢,带着这个疑惑我打开了网页版vscode,它居然真的可以打开我本地的项目代码!难道又出了新的API让......
  • 使用Python和Django构建Web应用程序
    Django简介Django是一个强大的PythonWeb框架,用于构建高效且可维护的Web应用程序。它提供了许多工具和库,用于处理常见的Web开发任务,如数据库管理、用户认证和URL路由。以下是一些Django的关键特点:ORM(对象关系映射):Django的ORM允许你使用Python代码来定义和查询数据库模型,而无需编写S......
  • 使用Django构建RESTful API
    Django简介Django是一个强大的PythonWeb框架,广泛用于构建高效且可维护的Web应用程序和RESTfulAPI。它提供了许多工具和库,用于处理常见的Web开发任务,如数据库管理、用户认证和URL路由。以下是一些关键Django特点:内置ORM(对象关系映射):Django的ORM允许你使用Python代码来定义和查询数......
  • 【高级】Django实现读写分离
    【1】第一步:配置文件配置多个数据库在Django的配置文件中的DATABASES参数中,添加多个数据库的配置信息。每个数据库都需要指定ENGINE(数据库引擎)和NAME(数据库名称),可以根据实际情况选择合适的数据库引擎和数据库名称。例如,在配置文件中添加两个数据库配置的示例:DATABASES={......
  • django-前端时间组件
    1、插件的下载BootstrapDatepicker是一款基于Bootstrap框架的日期选择控件,可以方便地在Web应用中添加可交互的日期选择功能。BootstrapDatepicker拥有丰富的选项和API,支持多种日期格式,可以自定义样式并支持各种语言。BootstrapDatepicker依赖bootstrap:bootstrap.min.css......
  • Django报错django.contrib.admin.sites.AlreadyRegistered
    Django报错django.contrib.admin.sites.AlreadyRegistered报错django.contrib.admin.sites.AlreadyRegistered:ThemodelOrderisalreadyregisteredwith'goods_service.OrderAdmin'.错误提示的意思是Order模型已经在goods_service.OrderAdmin中注册了,因此你不能再次......
  • 创建一个滚动到页面底部的循环,然后检查该元素
    fromselenium.common.exceptionsimportNoSuchElementException,TimeoutExceptionfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC#create......
  • 关于Flutter的webview无法访问私有SSL证书链接的问题
    优先考虑用 Freessl 技术方案: 问题原因项目部署服务器的Https为私有SSL证书,目前确认不会提供共有SSL证书,导致WebView访问网页空白问题官方设计WebView插件时,为了考虑安全性在访问https链接时,必须要求SSL证书有效,不支持自定义SSL错误的处理解决方式有三种处理方式:使......
  • 在最新的flutter2解决webview无法访问http问题
    具体操作就是在flutter项目下创建/android/app/src/main/res/xml/network_security_config.xml文件,填上配置内容: <?xmlversion="1.0"encoding="utf-8"?><network-security-config><base-configcleartextTrafficPermitted="true">......
  • WSL 重装系统后 ext4.vhdx 拒绝访问问题
    关键字拒绝访问。[已退出进程,代码为4294967295(0xffffffff)]现在可以使用Ctrl+D关闭此终端,或按Enter重新启动。WSL重装系统后ext4.vhdx拒绝访问问题背景前一段时间重装系统了,重装后准备安装好WSL和Ubuntu后,直接替换下ext4.vhdx文件,就不用重新配置Ubunt......