Почему моя попытка поймать решение не работает, как я ожидаю

Я пытаюсь проверить форму в проекте django, и часть проверки состоит в том, чтобы проверить, существует ли проект.

Окружающая среда:

python 3.6.3
django 1.10.8
python-keystoneclient 3.14.0

У меня есть этот чек в настоящее время

def clean_projectname(self):
        submitted_data = self.cleaned_data['projectname']
        newproj = "PROJ-FOO" + submitted_data.upper()
        keystone = osauth.connect()
        try:
            project = keystone.projects.find(name=newproj)
            raise forms.ValidationError('The project name is already taken')
        except NotFound:
            return submitted_data

Раздел try вернет либо объект проекта, либо исключение 404 not found.

Я пытался, кроме как на NotFound, но Django выдает мне ошибку

name 'NotFound' is not defined

Буду признателен за помощь в этом.

2 ответа

Решение

Вы импортировали NotFound от python-keystoneclient? Единственный способ, которым ваш код будет работать, - это если у вас есть эта строка где-то еще в вашем файле:

from keystoneclient.exceptions import NotFound

Я не знаю об исключении NotFound. Это что-то, что вы написали сами или, возможно, вы хотели использовать подобное исключение звука Django?

https://docs.djangoproject.com/en/2.0/ref/exceptions/

Другие вопросы по тегам