Django:/ admin处的NotNotExist

时间:2019-01-12 21:14:56

标签: python django

我有一个视图,该视图接收一个参数以构成查询过滤器并显示一些结果。

此视图的URL为:

views.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.

如何避免这种情况,而无需在 views.ProdCatDetail 视图中使用另一个URL?

更新1:

此视图过滤类别模型,并过滤产品模型以获取与此类别相对应的所有产品。

正如您在URL中看到的那样,它接受1个参数,即:<slug:c_slug>,但是,http://127.0.0.1:8000/admin中的admin被认为是一个ug,但不应这样做,因为我只使用此URI进入管理面板。

我尝试使用if和stament控制此流程:

if c_slug is not "muestras" and not "admin"

但是现在我得到了:

/ p中的

UnboundLocalError 赋值之前引用的本地变量“类别”

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})

1 个答案:

答案 0 :(得分:2)

我认为您可以通过在URLconf中为AdminSite添加显式路径来解决此问题。 尝试在具有views.ProdCatDetail视图的路径上上方添加以下行。

path('admin/', admin.site.urls),

但是请记住,您应该使用以下命令添加管理软件包:

from django.contrib import admin