Как исправить ошибку порядка строк пути в Django/Python?
У меня странная ошибка с файлом 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 работает
PLS помогите мне выяснить, в чем проблема
Я не знаю, в чем проблема, все остальные файлы в порядке,
Ваши пути пересекаются, поэтому он всегда будет стрелять первым видом. Даже если окажется, что для этого PostCategory
не существует slug. Django просто смотрит на паттерн пути, а затем запускает представление. Поэтому первый совпавший шаблон получает управление. Таким образом, это означает, что ваш второй путь никогда не сработает, потому что все пути второго пути покрываются первым.
Сделайте пути непересекающимися, например, добавив префикс:
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',
),
]