我有一个视图,它接收一个参数来进行查询筛选并显示一些结果
此视图的URL为:
视图.ProdCatDetail
urlpatterns = [
path('', views.allCat, name = 'allCat'),
path('<slug:c_slug>', views.ProdCatDetail, name = 'ProdCatDetail'),
]
问题是,如果我想通过以下方式访问管理面板:
http://127.0.0.1:8000/admin
我不能改变这种观点:
views.ProdCatDetail
被调用,由于没有“admin”类别,我得到一个错误:
DoesNotExist at /admin
Category matching query does not exist.
如何避免这种情况,而不使用视图的另一个URL.ProdCatDetail视图
更新1:
此视图过滤类别模型,并过滤产品模型以获得与此类别对应的所有产品
正如您在URL中看到的,它接受1个参数,即:<slug:c_slug>
,然而,来自http://127.0.0.1:8000/admin
的管理被认为是一个slug,当它不应该时,因为我只有这个URI才能进入管理面板
我试过使用和if stament来控制这个流:
if c_slug is not "muestras" and not "admin"
但现在我得到了:
UnboundLocalError位于/admin 赋值前引用的局部变量“category”
def ProdCatDetail(request, c_slug):
if c_slug is not "muestras" and not "admin":
try:
category = Category.objects.get(slug=c_slug)
products = Product.objects.filter(category__slug=c_slug)
except Exception as e:
raise e
return render(request, 'shop/productos_por_categoria.html', {'category':
category, 'products': products})
我认为可以通过在URLconf中为
AdminSite
添加显式路径来解决这个问题。 尝试在具有views.ProdCatDetail
视图的路径上方添加以下行但是请记住,您应该添加带有以下内容的管理包:
相关问题 更多 >
编程相关推荐