django - 为重复实例 Django 引发什么异常
问题描述
我有一个util
名为 的方法add_user
,它接收电子邮件和密码并创建一个用户。首先,它检查该用户是否已经存在:
if User.objects.filter(email=email).exists():
# raise some exception
我应该在这里提出什么样的例外?谢谢!!
解决方案
如果问题是关于引发异常然后使用ObjectDoesNotExist
from django.core.exceptions
,我认为您应该为用户模型创建自定义对象管理器并使用自定义异常继承ObjectDoesNotExist
。例如,
class EmailAlreadyExists(ObjectDoesNotExist):
pass
或者另一种方法是创建类方法:
class User(AbstractUser):
@classmethod
def create_user(cls, email):
if objects.filter(email=email).exists():
raise EmailAlreadyExists()
如果我们需要将一些参数传递给上面的代码可能无法工作,例如我没有或忘记了,EmailAlreadyExists
因为它是从ObjectDoesNotExist
.
最好的方法是创建自定义对象管理器User
并验证那里的所有内容。默认情况下,Django 已经为用户处理了电子邮件字段。
推荐阅读
- apache-tika - 如何从pdf文件中的图像中提取文本?
- azure - 未正确检索存储帐户实体的指标
- android - Android 房间数据库创建 - 回调
- ruby - 在某些条件下将值插入数组
- ms-access - 访问 VBA:按顺序索引选择列
- javascript - 如何在鼠标单击时禁用浏览器重新加载按钮
- sql - 如何使用单个 SQL 命令插入数据和删除重复行
- python - cx_Freeze 为 wxpython 脚本生成的 msi 导致 ImportError: DLL load failed
- mysql - 大表的mysql性能问题
- wordpress - 是否可以阻止像 Adobe Acrobat 这样的 Chrome 扩展程序?