如何修复 Django/Python 中的路径行顺序错误?

问题描述 投票:0回答:1

我的 urls.py 文件出现奇怪的错误

两行:

    path('<slug:postcategory_slug>/<slug:slug>', post_detail, name='post_detail'),
    path('<slug:category_slug>/<slug:slug>', product_detail, name='product_detail'),

如果与 post_detail 的行位于第一位 view.product_detail 渲染时出现错误 404:

No Post matches the given query.
Request Method: GET
Request URL:    http://127.0.0.1:8000/pryamye-shlifmashiny/pnevmoshlifmashina-s150z66a
Raised by:  apps.blog.views.post_detail

view.post_detail 效果很好

但是如果与 product_detail 一致,则排在第一位,例如

    path('<slug:category_slug>/<slug:slug>', product_detail, name='product_detail'),
    path('<slug:postcategory_slug>/<slug:slug>', post_detail, name='post_detail'),

view.product_detail效果很好 但是 view.post_detail 渲染时出现 404 错误

No Post matches the given query.
Request Method: GET
Request URL:    http://127.0.0.1:8000/posts/pnevmaticheskij-udarnyj-gajkovert-at-238
Raised by:  apps.store.views.product_detail

其他配置看起来不错,并且 URLS 有效

请帮我找出问题所在

我不知道问题是什么,所有其他文件都很好,

python django
1个回答
0
投票

您的路径重叠,因此它始终会触发第一个视图。即使事实证明没有鼻涕虫

PostCategory

使路径不重叠,例如通过添加前缀:

urlpatterns = [
    path(
        'post/<slug:postcategory_slug>/<slug:slug>',
        post_detail,
        name='post_detail',
    ),
    path(
        'product/<slug:category_slug>/<slug:slug>',
        product_detail,
        name='product_detail',
    ),
]
© www.soinside.com 2019 - 2024. All rights reserved.