как отформатировать URL-адрес, чтобы вернуть что-то вроде этого «product / 4 /improved-led-lamp» в шаблоне

#python #django #django-templates

#python #django #django-шаблоны

Вопрос:

Я пытаюсь вернуть форматированный URL-адрес, который будет выглядеть как этот «edit-book / 4 /improved-led-lamp», используя тег {% url %}

Я пытался {% url 'dashboard:editbook' 4 slug %}

вот корень url.py

 from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('', include('home.urls')),
    path('dashboard/', include('dashboard.urls')),
    path('admin/', admin.site.urls),
]
  

вот URL-адреса моего приложения dashboard, py

 from django.urls import path
from . import views

app_name = 'dashboard'
urlpatterns = [
   path('edit-book/<int:id>/<slug:title>', views.BookView.as_view(), name='editbook'),
]
  

если я посещаю «edit-book / 4 /improved-led-lamp» в своем браузере, он разрешается, но когда я пытаюсь воспроизвести это в представлении с использованием тега {% url %}, он выдает ошибку noReverseMatch

это скриншот ошибки

Комментарии:

1. Пожалуйста, покажите ошибку полностью.

2. @DanielRoseman, я только что загрузил скриншот ошибки, плюс я отредактировал код, чтобы предоставить более подробную информацию

Ответ №1:

Ваш синтаксис выглядит правильным, и если slug переменная состоит из slug ( [-a-zA-Z0-9_] ), она должна работать.

Посмотрите на содержимое slug . На скриншоте ошибки показано, что это пустая строка.

Комментарии:

1. на скриншоте показано, что slug переменная является пустой строкой. Там нужен настоящий slug.