Django:DoesNotExist at/管理员

2024-06-17 15:40:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个视图,它接收一个参数来进行查询筛选并显示一些结果

此视图的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})

Tags: pathname视图url参数ifadminnot
1条回答
网友
1楼 · 发布于 2024-06-17 15:40:41

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

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

但是请记住,您应该添加带有以下内容的管理包:

from django.contrib import admin

相关问题 更多 >