Как правильно перенаправить на новый шаблон, используя uuid в качестве URL-адреса

#django

Вопрос:

У меня есть следующий исходный шаблон, который отображает uuid модели Pollers в виде скрытого <a> тега, чтобы перенаправить пользователя на этот элемент, отображаемый в новом шаблоне по щелчку пользователя.

 <div class="poller-wrapper">
  <a class="hidden_poller_id" href="/poller/{{ poller.poller_id }}">

  <div class="poller-text">{{ poller.poller_text }}</div>

[...]
 

Сопоставление URL-адресов выглядит следующим образом:

 urlpatterns = [

    # Main overview of recent pollers
    path('pollboard/', pollboard, name='pollboard'),

    # Redirect url to single Poller
    path('poller/<uuid:poller_id>', single_poller, name='single_poller'),

]
 

Вид

 def single_poller(request):
    return render(request, 'pollboard/single_poller.html')
 

Прямо сейчас я получаю следующую ошибку, и я не уверен, почему она неправильно перенаправляется:

Ошибка ввода в /poller/d251ce80-1d0d-41c4-a096-c12bdd2399f8 Функция single_poller() получила неожиданный аргумент ключевого слова ‘poller_id’

Ответ №1:

Ваше представление должно принимать значение параметра poller_id URL, поэтому:

 #                            ↓ value matched by <uuid:poller_id>
def single_poller(request, poller_id):
    return render(request, 'pollboard/single_poller.html') 

Вы можете использовать это, например, для извлечения связанного Poller объекта и передачи элементов в качестве контекста для render(…) вызова.