Передача двух параметров через URL в Django

У меня возникли трудности с передачей параметров в URL в Django.

Я пытаюсь передать два параметра из calander.html -> succ.html. URL выглядит следующим образом: Нажмите для изображения URL

На этом изображении я хочу передать 11:00 утра в качестве времени начала и 12:00 вечера в качестве времени окончания.

Мой файл urls.py содержит:

path('calender', views.calender, name='calender'),
....
....
path('succ', views.succ, name='succ'),

Мой файл views.py содержит:

def calender(request):
return render(request, 'calender.html')

def succ(request):
return render(request, 'succ.html')

Я попытался добавить параметры в файл views.py, а затем добавить новый путь в urls.py после просмотра нескольких видео, но так и не смог найти решение, поскольку я передаю два параметра (StartTime и EndTime).

Примечание: Двоеточия : недопустимы для урлов, используйте подчеркивания _ вместо них и делайте start = start.replace('_', ':') в представлении, если вам действительно нужно двоеточие

Я не уверен, что это была единственная проблема, с которой вы столкнулись, но вот два разбитых способа передачи параметров в представление. Оба они, по сути, делают одно и то же

1 Использование URL-адресов Django

## Urls
# Notes:
#   both point at the same view (See next section)
#   <slug> means it's a string

path('calender', views.calender, name='calender'),

path('calender/<slug:StartDate>/<slug:EndDate>', views.calender, name='calender'),
# Example: calendar/11_00am/12_00pm
## Views (Note: Setting them as None allows you two have 2 URL paths pointing to a single view)
def calender(request, StartDate=None, EndDate=None):
  if StartDate and EndDate:
    # do things
    #   maybe render a different template or maybe just pass to render

    # EndDate = EndDate.replace('_', ':') # 12:00pm format

return render(request, 'calender.html')

2 Использование параметров GET

## Urls
# Notes:
#   Single Path, Will pass parameters with GET
#   Generally you have to manually attach GETs to a URL (Either in Template Logic <a> , or Javascript) 

path('calender', views.calender, name='calender'),
# Example: calendar?StartDate=11_00am&EndDate=12_00pm
## Views
def calender(request):
  # Note: Using GET.get() will return None if it's not there
  #   which is probably better than GET[] which would crash if it's not there
  StartDate = request.GET.get('StartDate')
  EndDate = request.GET.get('EndDate')
  if StartDate and EndDate:
    # do things
    #   maybe render a different template or maybe just pass to render

    # EndDate = EndDate.replace('_', ':') # 12:00pm format

return render(request, 'calender.html')
Вернуться на верх