Путь Django не совпал ни с одним из них при добавлении параметра запроса к конечной точке
Я использую django 4.1
У меня есть модель продукта
class Product(models.Model):
product_id = models.CharField(
blank=False,
null=False,
max_length=50,
verbose_name="stock ID",
)
name = models.CharField(max_length=30, blank=False)
price = models.IntegerField(blank=False)
availability = models.IntegerField(verbose_name="product availability")
timestamp = models.DateTimeField(auto_now=True)
product/urls.py
router = routers.DefaultRouter()
router.register("product/<slug:product_id>", productViewset, basename="productPrice")
urlpatterns = [
path("", include(router.urls)),
]
и в проекте urls.py
api_patterns = [
path("", include("product.urls")),
]
urlpatterns = [
path("admin/", admin.site.urls),
path("api/", include(api_patterns)),
]
когда я пытаюсь вызвать эту конечную точку "http://127.0.0.1:8000/api/product/2048cf23-6bb2-4532-a140-b13dd1361c4/", она не соответствует ни одному пути в моем проекте!
NB:product_id не является первичным ключом, так как существует более одной строки для одного и того же продукта, но с разным временем и ценой.
Я пытался использовать < str:product_id > < string:product_id > < uuid:product_id > но ничего не работает, я не уверен, почему это происходит, но когда я меняю url в product urls.py на router.register("product", productViewset, basename="productPrice")
, это работает, но мне нужен путь к этому id для фильтрации набора запросов.
сообщение об ошибке
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/api/product/2048cf23-6bb2-4532-a140-b13dd1361c4/
Using the URLconf defined in myproject.urls, Django tried these URL patterns, in this order:
admin/
api/ ^product/<slug:product_id>//$ [name='productPrice-list']
api/ ^product/<slug:product_id>\.(?P<format>[a-z0-9]+)/?$ [name='productPrice-list']
api/ ^product/<slug:product_id>//(?P<pk>[^/.]+)/$ [name='productPrice-detail']
api/ ^product/<slug:product_id>//(?P<pk>[^/.]+)\.(?P<format>[a-z0-9]+)/?$ [name='productPrice-detail']
api/ ^$ [name='api-root']
api/ ^\.(?P<format>[a-z0-9]+)/?$ [name='api-root']
api/ ^$ [name='api-root']
api/ ^\.(?P<format>[a-z0-9]+)/?$ [name='api-root']
The current path, api/product/2048cf23-6bb2-4532-a140-b13dd1361c4/, didn’t match any of these.