为什么我的尝试捕获解决方案不能按预期工作

时间:2018-01-28 06:36:14

标签: python django openstack-keystone

我正在尝试验证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未找到的异常。

我试过除了NotFound但Django给我一个错误

name 'NotFound' is not defined

我很感激你的帮助。

2 个答案:

答案 0 :(得分:2)

您是否从NotFound导入了python-keystoneclient?代码运行的唯一方法是在文件中的其他位置使用此行:

from keystoneclient.exceptions import NotFound

答案 1 :(得分:0)

我不知道NotFound异常。这是你自己写的东西,或者你是否打算使用类似的声音Django异常?

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