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),
]
出现以下错误
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),
]