我想验证提交的URL在数据库中不存在。在Django表单上产生ValidationError的问题
Form类看起来像这样的相关部分:
from django.contrib.sites.models import Site
class SignUpForm(forms.Form):
# ... Other fields ...
url = forms.URLField(label='URL for new site, eg: example.com')
def clean_url(self):
url = self.cleaned_data['url']
try:
a = Site.objects.get(domain=url)
except Site.DoesNotExist:
return url
else:
raise forms.ValidationError("That URL is already in the database. Please submit a unique URL.")
def clean(self):
# Other form cleaning stuff. I don't *think* this is causing the grief
的问题是,无论我提出什么价值,我不能提高ValidationError
。如果我做这样的事情在clean_url()
方法:
if Site.objects.get(domain=url):
raise forms.ValidationError("That URL is already in the database. Please submit a unique URL.")
然后我得到一个DoesNotExist
错误,即使对于已经存在于数据库中的URL。有任何想法吗?
没有好 - 的错误不会引起人们的关注,当它应该。 – saturdayplace 2008-12-04 04:04:08
那么你还有其他问题。这必须工作。你运行的是“manage.py testserver”,每次运行时都会得到一个新的空数据库?你正在运行“manage.py runserver”吗? – 2008-12-04 11:11:50