Параметры запроса Django: MultiValueDictKeyError - Ключ не найден в QueryDict - PullRequest
2 голосов
/ 22 мая 2019

У меня есть простая веб-страница с одной ссылкой, index.html:

<a href='/dog/?owner=' + data['owner'] + '&breed=bulldog'>Dog</a>

Здесь данные передаются динамически через сервер.
urls.py имеет определение метода для вызова:

...
url(r'^dog/$',
        TemplateView.as_view(template_name='dog.html'),
        name='dog'),
    url(r'^ajax/dog/$',
        views.dog,
        name='ajax/dog'),
...

А у моего views.py определен метод:

def dog(request):
  owner = request.GET['owner']
  LOG.info(owner)
  breed = request.GET['breed']
  LOG.info(breed)
  ...

При нажатии на ссылку в index.html появляется следующая ошибка:

...
  File "/mnt/virtualenv/local/lib/python2.7/site-packages/django/utils/datastructures.py", line 295, in __getitem__
    raise MultiValueDictKeyError("Key %r not found in %r" % (key, self))
MultiValueDictKeyError: "Key 'breed' not found in <QueryDict: {u'owner': [u'kevin_lawder']}>"

Меня действительно смущает вопрос, почему один параметр запроса присутствует в словаре QueryDict, а другой - нет. Я попытался заменить request.GET['breed'] на request.GET.get('breed'), но это возвращает None.
Что мне здесь не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...