Передача двух параметров через 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')