Как определить значение по умолчанию для параметров 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']
# …
# …