Python Django“ProductDetailView”对象没有属性“user”

Python Django“ProductDetailView”对象没有属性“user”,python,django,request,Python,Django,Request,为电子商务站点创建一个页面,允许用户将项目添加到购物车中。我在ProductDetailView中找不到对象用户时遇到问题。我将get_context_data函数重写为基于类的视图,因此当他们访问特定的产品页面时将调用它 错误: 我假设这是因为视图没有看到用户,因为它需要一个user.objects.all views.py 问题在于您的def get_context_datarequest,**kwargs中,您需要将self作为第一个参数。您需要从参数中删除请求,并使用self.reque

为电子商务站点创建一个页面,允许用户将项目添加到购物车中。我在ProductDetailView中找不到对象用户时遇到问题。我将get_context_data函数重写为基于类的视图,因此当他们访问特定的产品页面时将调用它

错误:

我假设这是因为视图没有看到用户,因为它需要一个user.objects.all

views.py

问题在于您的def get_context_datarequest,**kwargs中,您需要将self作为第一个参数。您需要从参数中删除请求,并使用self.request访问它:

def get_context_data(self, **kwargs):

    filtered_orders = Order.objects.filter(owner=self.request.user.user_profile, is_ordered=False)

您忘记了将self作为get_context_data方法的第一个参数。def get_context_dataself,request,**kwargs:现在刚刚看到你的评论,为什么在它回答问题时作为评论发布?好的,我将其更改为get_context_dataself,request,**kwargs:但我现在收到以下错误:get_context_data缺少1个必需的位置参数:“request”好的,我将其更改为get_context_dataself,request,**kwargs:但我现在收到此错误:get_context_data缺少1个必需的位置参数:“request”我修改了答案,您需要从参数列表中删除request,并改用self.request。非常感谢,这是为什么?请求现在查看用户的self?我从get_context_数据中删除了**kwargs,现在收到此错误:get_context_数据获得了一个意外的关键字参数“object”,为什么我在get_context_数据中需要**kwargs答案解决了您的问题吗?你把它标对了。
from django.shortcuts import render, redirect
from django.shortcuts import render
from django.views.generic import CreateView, DetailView, ListView, RedirectView, UpdateView
from django.views import generic

from django.contrib.auth.decorators import login_required  # This is to block pages to non users using function views
from django.contrib.auth.mixins import LoginRequiredMixin
from .forms import ProductForm, ContactForm
from .models import Product, Contact
from checkout.models import OrderItem, Order
from users.models import User, Profile
# Create your views here.

class ProductDetailView(generic.DetailView):
    model = Product
    template_name = 'portal/product_detail.html'


    def get_context_data(request,  **kwargs):


        filtered_orders = Order.objects.filter(owner=request.user.user_profile, is_ordered=False)

    current_order_products = []
    if filtered_orders.exists():
        user_order = filtered_orders[0]
        user_order_items = user_order.items.all()
        current_order_products = [product.product for product in user_order_items]

    context = {
        'current_order_products': current_order_products
    }

    return context
def get_context_data(self, **kwargs):

    filtered_orders = Order.objects.filter(owner=self.request.user.user_profile, is_ordered=False)