На мой взгляд, у меня есть аргумент времени, который нужно передать, но как мне передать его через URL-адрес django

Мое мнение

def create_event(check):
TimeSlots.objects.create(start=check)
return HttpResponseRedirect("index.html")

И я попробовал URL

url(r'^new/(?P<time>\d{2}:\d{2}:\d{2})/$', views.create_event, name='check'),

Я назвал это как

<a href="{% url 'check' 08:30:00 %}">click</a>

Но он не работает и выдает ошибку Не удалось проанализировать остаток: ': 30: 00' от '08: 30: 00 '

1
Ahmed 5 Окт 2018 в 16:58

1 ответ

Лучший ответ

Проблема в том, что вы передаете 08:30:30 как "необработанное выражение". Но шаблоны Django не понимают, что вы делаете с этим двоеточием.

Вам нужно передать параметр в виде строки, например:

<a href="{% url 'check' time='08:30:00' %}">click</a>
<!--                         ^ quote  ^  -->

Поскольку ваш URL-адрес содержит параметр time, вам необходимо обработать его в представлении:

def create_event(request, time):
    TimeSlots.objects.create(start=time)
    return HttpResponseRedirect("index.html")

Обратите внимание, что это представление вносит изменения в сущности, и поэтому обычно это следует обрабатывать с помощью запроса POST. Запросы GET обычно не должны вносить (значительных) изменений.

1
Willem Van Onsem 5 Окт 2018 в 14:00