Как переписать или добавить слова в URL Django?
Когда я перехожу на страницу подробного описания товара, я получаю http://xxx.x.x.x:x000/product/PN/
Я хочу изменить URL с PN на название продукта. Таким образом, мой URL должен выглядеть следующим образом, если все работает правильно http://xxx.x.x.x:x000/product/name/:
model.py
class Product():
name = models.CharField(max_length=400, db_index=True)
PN = models.CharField(max_length=100, default=random_string)
view.py
def product_detail(request, PN):
product = get_object_or_404(Product, PN=PN)
return render(request, 'productdetail.html',
{'product': product})
url.py
urlpatterns = [
url(r"^", include("users.urls")),
path('product/<str:PN>/', productdetail, name='productdetail')
]
Я уже пробовал: изменить urls.py
urlpatterns = [
url(r"^", include("users.urls")),
path('product/<str:name>/', productdetail, name='productdetail')
]
тогда я изменил def productdetail(request, name): get_object_or_404(Product, name=name)
но я получил следующую ошибку.
Page not found (404)
Request Method: GET
Request URL: http://xxx.x.x.x:x000/product/PN/
Raised by: shop.views.productdetail
No Product matches the given query.
Вы видите эту ошибку, потому что в вашем файле настроек Django установлено DEBUG = True. Измените это значение на False, и Django отобразит стандартную страницу 404.