Как определить значение по умолчанию для параметров get в Django?

Я не понимаю, почему я не могу определить значение по умолчанию для параметра get, даже после прочтения документа о QueryDict. Вот что у меня есть:

def find_users(request):

    selected_zipcode = request.GET.get('zipcode', 75000)
    selected_service = request.GET.get('service', 1)

    # raise Exception(request.GET)

    users = User.objects.filter(
        Q(zipcode=selected_zipcode),
        Q(proposals__pk=selected_service)
    )
    return render(
        request,
        'users.html', {users
        'users': pet_sitters,
    })

Я могу получить свой параметр, если он задан в моем url, но если я не определяю параметр zipcode, я не получаю 75000 в качестве значения. У меня есть только 75000, если параметр zipcode не существует.

Возможно, вы написали строку запроса как ?zipcode, или как ?zipcode=. В этом случае ключ будет установлен и отображен на пустую строку.

В этом случае вы можете установить другое значение, реализовав это следующим образом:

selected_zipcode = request.GET.get('zipcode', 75000) or 75000

В случае, если результат request.GET.get(…) имеет истинность False, возвращает второй операнд, так что 75000.

Однако, возможно, лучше работать с формой, и передавать request.GET в качестве данных, так:

class MyForm(forms.Form):
    zipcode = forms.IntegerField(initial=75000, required=False)
    service = form.IntegerField(initial=1, required=False)

и работать в представлении с:

def find_users(request):
    form = MyForm(request.GET)
    if form.is_valid():
        selected_zipcode = myform.cleaned_data['zipcode']
        selected_service = myform.cleaned_data['service']
        # …
    # …
Вернуться на верх