Параметры строки запроса

Последнее обновление: 13.08.2022

От параметров, которые передаются через адрес URL, следует отличать параметры, которые передаются через строку запроса. Например, в запросе

http://127.0.0.1:8000/index/3/Tom/

два последних сегмента - 3/Tom/ представляют параметры URL или параметры маршрута. А в запросе

http://127.0.0.1:8000/index?id=3&name=Tom

те же самые значения 3 и Tom представляют параметры строки запроса.

Параметры строки запроса указывается после вопросительного знака ?. Каждый параметр предсталяет пару ключ-значение, напимер, в id=3 : id - название или ключ параметра, а 3 - его значение. Параметры в строке запроса отделяются друг от друга знаком амперсанда.

Для получения параметров из строки запроса применяется метод request.GET.get(), в которую передается название параметра.

Например, определим в файле views.py следующие функции:

from django.http import HttpResponse
  
def index(request):
    return HttpResponse("<h2>Главная</h2>")
 
def user(request):
    age = request.GET.get("age")
    name = request.GET.get("name")
    return HttpResponse(f"<h2>Имя: {name}  Возраст: {age}</h2>")

Функция user принимает извлекает из строки запроса два параметра: name и age.

В файле urls.py определим следующие маршруты:

from django.urls import path
from hello import views
 
urlpatterns = [
    path("", views.index),
    path("user/", views.user)
]

При обращении к приложению по адресу http://127.0.0.1:8000/user/?name=Tom&age=22, параметр name будет иметь значение "Tom", а параметр age - 22.

Параметры строки запроса в Django

Однако возможна ситуация, когда для каких-то параметров не будет передано значение. В этом случае мы можем указать для подобных параметров значение по умолчанию. Для этого изменим определение функции user в views.py:

from django.http import HttpResponse
  
def index(request):
    return HttpResponse("<h2>Главная</h2>")
 
def user(request):
    age = request.GET.get("age", 0)
    name = request.GET.get("name", "Undefined")
    return HttpResponse(f"<h2>Имя: {name}  Возраст: {age}</h2>")

Второй параметр функции request.GET.get() представляет значение по умолчанию для параметра, для которого не задано значение.

Соответственно при обращении по адресу http://127.0.0.1:8000/user/ параметры name и age получат значения по умолчанию:

Значения по умолчанию для параметров строки запроса в веб-приложении на Django
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850