我正在使用 django 3.2 构建个人电子商务项目,在访问我的产品页面 url 时找不到错误页面 (404) Method:GET URL:http://127.0.0.1:8000/products 使用 main.urls 中定义的 URLconf .我遵循了所有的约定,其他页面都在工作,但是这个页面给了我一个 [urls[\views][1][browser display] 困难时期,因为我觉得一切都是正确的,我可能是错的,请帮助和如果您需要查看我的更多代码,请告诉我。
这是我的网址代码
from django.urls import path
from django.views.generic.detail import DetailView
from django.views.generic import *
from main import models, views
app_name = 'main'
urlpatterns = [
path('', views.home, name='home'),
path('about_us/', views.about_us, name='about_us'),
path('contact-us/', views.ContactUsView.as_view(), name='contact_us'),
path(
"products/<slug:tag>/",
views.ProductListView.as_view(),
name="products"
),
path("product/<slug:slug>/", DetailView.as_view(model=models.Product), name='product'),
]
我的视图代码
from django.views.generic.edit import FormView
from .forms import ContactForm
from django.views.generic.list import ListView
from django.views.generic.detail import DetailView
from django.shortcuts import get_object_or_404
from main import models
class ProductListView(ListView):
template_name = "main/product_list.html"
paginate_by = 4
def get_queryset(self):
tag = self.kwargs['tag']
self.tag = None
if tag != "all":
self.tag = get_object_or_404(
models.ProductTag, slug=tag
)
if self.tag:
products = models.Product.objects.active().filter(
tags=self.tag
)
else:
products = models.Product.objects.active()
return products.order_by("name")
然后是我的浏览器
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/products
Using the URLconf defined in booktime.urls, Django tried these URL patterns, in this order:
admin/
[name='home']
about_us/ [name='about_us']
contact-us/ [name='contact_us']
products/<slug:tag>/ [name='products']
product/<slug:slug>/ [name='product']
^media/(?P<path>.*)$
The current path, products, didn’t match any of these.
答案 0 :(得分:0)
您必须创建一个以“products/”结尾的网址路径。您创建 url 只是为了使用参数“标签”发送。 “产品/slug:标签/”
因此,将“products/”添加到以下网址的网址路径中,您将使用“http://127.0.0.1:8000/products/”进行访问
路径( “产品/”, views.ProductListView.as_view(), 名称=“产品” )