Джанго попробуй кроме не работающего - PullRequest
3 голосов
/ 28 сентября 2011

У меня есть этот код,

    try:
        print "what"
        newClassName = CourseNameAndCodeAssociation.objects.get(departmentCode__iexact =         nameAndNumberStore[0])
        print newClassName  
    except:
        print "HAHA"

Это всегда печатает "HAHA", несмотря на тот факт, что я запустил код newClassName = ... в консоли, и он работает.

Почему это происходит?

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

def newGetAllInformation(searchTerm):
nameAndNumberStore = modifySearchTerm(searchTerm)
urlStore = modifyUrl(nameAndNumberStore) # need to make the change here -- why not I go to the site, check for Course name - if that is not there switch, if it is  then scrape 
soup = getHtml(urlStore) 
storeOfBooks = []
storeOfBooks = scrape(soup,nameAndNumberStore)
print nameAndNumberStore[0]
try:
    newClassName = CourseNameAndCodeAssociation.objects.get(departmentCode__iexact = nameAndNumberStore[0])
    nameAndNumberStore = modifySearchTerm(newClassName.departmentName + " " + nameAndNumberStore[1])
    urlStore = modifyUrl(nameAndNumberStore)
    soup = getHtml(urlStore)
    storeOfBooks = scrape(soup,nameAndNumberStore)

except:
    print "HAHA"

return storeOfBooks

РЕДАКТИРОВАТЬ После дальнейшего исследования, то есть ввода действительногокод вручную (что сработало), я думаю, что есть что-то с извлечением кода из массива, несмотря на тот факт, что оба имеют одинаковый тип данных (строка).

, поэтому newClassName = CourseNameAndCodeAssociation.objects.get(departmentCode__iexact = "econ") работает из файла, ноnewClassName = CourseNameAndCodeAssocition.objects.get(departmentCode__iexact = nameAndNumberStore[0]), где nameAndNumberStore[0] содержит экон

Ответы [ 2 ]

9 голосов
/ 28 сентября 2011

Пожалуйста, измените код на это, запустите его и сообщите нам, какое исключение вы получаете:

try:
    print "what"
    newClassName = CourseNameAndCodeAssociation.objects.get(departmentCode__iexact =         nameAndNumberStore[0])
    print newClassName  
except Exception as e:
    print "HAHA"
    print e

Кроме того, вероятно, будет полезно установить отладчик на вашем компьютере.Я могу рекомендовать Eclipse в сочетании с PyDev, но это личный выбор.Существует множество отличных опций.

Eclipse IDE - загрузите базовую версию Java размером 120 МБ

, а затем установите этот плагин поверх него - Pydev

2 голосов
/ 28 сентября 2011

Измените его на:

except CourseNameAndCodeAssociation.DoesNotExist:

Каждая создаваемая вами модель получает свое DoesNotExist исключение, расширяющее ядро ​​ObjectDoesNotExist исключение.

Также самое лучшееподход заключается в том, чтобы использовать tryexcept только вокруг точной линии, которую вы ожидаете потерпеть неудачу.Более питонский способ написать то, что у вас есть:

department_code = name_and_number_store[0]
class_names = CourseNameAndCodeAssociation.objects.all()
try:
    new_class_name = class_names.get(departmentCode__iexact=department_code)
except CourseNameAndCodeAssociation.DoesNotExist:
    print "HAHA"
else:
    search_term = u'%s %s' % (new_class_name.departmentName,
                              name_and_number_store[1])
    name_and_number_store = modify_search_term(search_term)
    url_store = modify_url(name_and_number_store)
    soup = get_html(url_store)
    store_of_books = scrape(soup, name_and_number_store)

Обратите внимание, что в Python принято использовать lowercase_underscored_names для переменных, атрибутов и имен функций и CamelCaseNames для имен классов(имена экземпляров являются либо переменными, либо атрибутами).

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