python - Django 'ProductDetailView' 对象没有属性 'user'
问题描述
为电子商务网站创建一个页面,允许用户将商品添加到他们的购物车。我在 ProductDetailView 中找不到对象用户时遇到问题。我将 get_context_data 函数覆盖到基于类的视图中,因此当他们访问特定产品页面时会调用它。
错误:
'ProductDetailView' object has no attribute 'user'
我假设这是因为视图看不到用户,因为它需要 user.objects.all()?
视图.py
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(request, **kwargs)
,你需要self
作为第一个参数。您需要request
从参数中删除并使用self.request
它来访问它:
def get_context_data(self, **kwargs):
filtered_orders = Order.objects.filter(owner=self.request.user.user_profile, is_ordered=False)
推荐阅读
- json - Django 休息框架 charfilter json
- python - 如何在python函数错误代码“名称'男性'未定义”中声明函数内的变量
- java - 直接从 main 访问链表节点
- git - 无法从 git 授权 github
- computer-science - 比较两个二叉堆是否相等的最著名的界限是什么?
- apache-kafka - Kafka RoundRobin 分区程序未将消息分发到所有分区
- sql - 我应该如何将 URL 添加到我的 SQL 案例语句中?
- rust - 硬件计时器在首次使用时立即完成。STM32F303VC
- python - 如何在 Python 3 中更改具有特定坐标的像素颜色 | 开放式简历?
- pushviewcontroller - 如何将动作从 SKScene 组件传播到 UIViewController