AttributeError: module in Django, Python

AttributeError: module in Django, Python

出现以下错误

File "C:\Users\abc\Projects\ecom\src\ecom\urls.py", line 33, in <module>
path('products/', views.ProductListView.as_view()),
AttributeError: module 'ecom.views' has no attribute 'ProductListView'

ecom/src/ecom/url.py

from products.views import ProductListView, product_list_view

from . import views

urlpatterns = [
path('', views.home_page),
path('login/', views.login_page),
path('register/', views.register_page), 
path('products/', views.ProductListView.as_view()),
path('products-fbv/', views.product_list_view),
path('admin/', admin.site.urls),
]

ecom/src/products/views.py

from django.views.generic import ListView
from django.shortcuts import render


from .models import Product


class ProductListView(ListView):
    queryset = Product.objects.all()
    template_name="products/list.html"



def product_list_view(request):
    queryset=Product.objects.all()
    context={
    'qs':queryset
    }
    return render(request,"products/list.html", context)

尝试更改 urlpatterns 和产品,但没有任何效果。

那么你指定 views.py 文件是 ecom/src/<b>products/views.py</b> .所以这意味着模块是 products.views。您实际上已经导入了它。但是在你的 urls.py 中,你写 views.ProductListView,而那个 views 模块实际上是 ecom 中的一个。因此,您不应该通过 <s>views.ProductListView</s> 引用它,而是像您一样导入它,然后直接引用它。

如果你想引用这个视图,你可以使用:

from products.views import <b>ProductListView, product_list_view</b>

from . import views

urlpatterns = [
    path('', views.home_page),
    path('login/', views.login_page),
    path('register/', views.register_page), 
    path('products/', <b>ProductListView</b>.as_view()),
    path('products-fbv/', <b>product_list_view</b>),
    path('admin/', admin.site.urls),
]