这个网站上有很多人对我有类似的问题,但我似乎找不到按照我想要的方式解决它的问题。
我试图从数据库中获取密码,以便我可以自动发送电子邮件。为此,我打电话给Credential.objects.get(username='foo').password
。
这是我得到错误的地方。
真正奇怪的是我已经在python控制台中访问了这个数据库, 和 我在其中创建了一行。我不知道为什么它没有出现!
其他人似乎建议您执行以下操作:
try:
Credential.objects.get(username='foo').password
except Exception as e:
return None
所有这一切都是为了确保程序不会返回错误。 这对我没有帮助,因为这不会失败。 必须发送一封电子邮件,此电话必须获得该电子邮件。 我几乎可以肯定我为此调用了正确的功能,但之前我错了。对此的任何帮助将不胜感激。
credential.py(出于安全原因未提出max_length
):
import d_models as models
class Credential(models.Model):
username = models.CharField()
password = EncryptedCharField()
答案 0 :(得分:0)
以下可能会清除您的概念。
from django.core.exceptions import ObjectDoesNotExist
try:
Credential.objects.get(username='foo').password
except ObjectDoesNotExist:
#If User with username='foo' does not exist in database then it will comes #in exception.
#Even if there are multiple entries in database with username='foo' then also it will give you error for this you need to use another exception.
return "What ever you want to return on exception"
否则你可以尝试:
python manage.py shell
for user in Credentials.objects.all():
print username
print password
并检查数据库中可用的用户数(在settings.py文件中配置)。
答案 1 :(得分:0)
看了我的代码两个小时后,我意识到我是个白痴。
我遗漏的一件事是我在一个测试用例中运行了这个函数,它会分离出单独的空白测试数据库。函数调用不起作用,因为它试图进入错误的数据库!
为了解决这个问题,我刚刚调用了./manage.py dumpdata --format json --indent 4 -o ./full/path/to/file/credential.json
并将fixtures = ['./full/path/to/file/credential.json']
放在测试类的顶部。感谢大家的建议!希望我没有浪费你太多的时间!