Помогите! Ключевая ошибка в питоне - PullRequest
0 голосов
/ 18 августа 2011

Я продолжаю получать эту ошибку:

MultiValueDictKeyError at /search/

"Key 'name' not found in <'QueryDict: {}>"

Я только начал изучать программирование два дня назад, поэтому кто-то может объяснить непрофессионалу, почему существует проблема и как ее решить.Спасибо!

Вот раздел программирования:

def NameAndOrCity(request):
    NoEntry = False
    if 'name' in request.GET and request.GET['name']:
        name = request.GET['name']
        if len(Business.objects.filter(name__icontains=name)) > 0:
            ByName = Business.objects.filter(name__icontains=name)
            q = set(ByName)
            del ByName
            ByName = q

    if 'city' in request.GET and request.GET['city']:
        city = request.GET['city']
        if len(Business.objects.filter(city__icontains=city)) > 0:
            ByCity = Business.objects.filter(city__contains=city)
            p = set(ByCity)
            del ByCity
            ByCity = p


    if len(q) > 0 and len(p) > 0:
            NameXCity = q & p
            return render_to_response('search_results.html', {'businesses':NameXCity, 'query':name})
        if len(q) > 0 and len(p) < 1:
            return render_to_response('search_results.html', {'businesses':ByName, 'query':name})
        if len(p) > 0 and len(q) < 1:
            return render_to_response('search_results.html', {'businesses':ByCity, 'query':city})
        else:
            NoResults = True
            return render_to_response('search_form.html', {'NoResults': NoResults})
    else:
        name = request.GET['name']
        city = request.GET['city']
        if len(name) < 1 and len(city) < 1:
            NoEntry = True
        return render_to_response('search_form.html', {'NoEntry': NoEntry})

РЕДАКТИРОВАНИЕ

1) Business.object - это моя база данных предприятий.Это объекты с такими атрибутами, как имя, город и т. Д. Я пытаюсь создать программу, которая будет искать компании по их атрибутам

2, а не дублировать сообщение

3) как проверить, существуют ли эти ключи, прежде чем пытаться их использовать?

1 Ответ

2 голосов
/ 18 августа 2011

Похоже, что единственное место, где вы можете получить эту ошибку, находится в этой строке:

name = request.GET['name']

Вы не проверили, присутствует ли имя в словаре request.GET, прежде чем пытаться получить к нему доступ.как вы сделали выше, так что вы получите ошибку ключа, если этот ключ не существует в запросе. GET.

Так что, похоже, вам нужно изменить следующий раздел, чтобы проверить, 'name' и 'city'ключи существуют в вашем запросе. ПОЛУЧИТЕ словарь, прежде чем пытаться получить доступ к значениям:

name = request.GET['name']
city = request.GET['city']
if len(name) < 1 and len(city) < 1:
    NoEntry = True
return render_to_response('search_form.html', {'NoEntry': NoEntry})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...