Django 和 sqlite 电子邮件身份验证

发布于 2024-12-10 14:11:28 字数 388 浏览 0 评论 0原文

我想创建一个经过电子邮件验证的 django 用户模型,我基本上遵循了该网站中的步骤: http://www.micahcarrick.com/django-email-authentication.html 并且还在 managmenet 模块的 post_syncdb 函数中包含了表更改代码,以使电子邮件成为唯一标识符。这对于 MySql 来说应该可以正常工作。但是,它不适用于 sqlite。这是因为 sqlite 的表更改是有限的,不允许您更改该属性,甚至不允许添加具有唯一标识符的列。

如果没有优雅的方法来做到这一点,那么我可能不得不切换到 MySql。

I wanted to create an email authenticated django user model, and I basically followed the steps in this website:
http://www.micahcarrick.com/django-email-authentication.html
And also included the table alteration code in a post_syncdb function in a managmenet module, to make the email a unique identifier. This should work ok with MySql. BUT, it wont work for sqlite. This is because sqlite's table alteration is limited and wont allow you to change that attribute OR even add a column with a unique identifier.

If there is no elegant way of doing this, then I might have to switch to MySql.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

橘和柠 2024-12-17 14:11:28

http://www.sqlite.org/faq.html#q26

所以,它是独一无二的完全支持,但不能使用 UNIQUE 更改表。因此,将表转储到具有 UNIQUE 约束的新表,然后更改并重命名这些表。或者只是转储它,修改转储并重新导入它。

http://www.sqlite.org/faq.html#q26

So, it UNIQUE is fully supported, but you cannot alter a table using UNIQUE. So dump the table to a new table that has the UNIQUE constraint then alter and rename the tables. Or just dump it, modify the dump and reimport it.

拥抱影子 2024-12-17 14:11:28

我认为,在 post_syncdb 挂钩中,您可以添加:

cursor.execute(
    "CREATE UNIQUE INDEX IF NOT EXISTS auth_user_email_unique "
    "ON auth_user (email COLLATE NOCASE);"
)

您可能必须根据 settings.DATABASES['default']['ENGINE'] 分解不同的块

I think, in your post_syncdb hook, you can add:

cursor.execute(
    "CREATE UNIQUE INDEX IF NOT EXISTS auth_user_email_unique "
    "ON auth_user (email COLLATE NOCASE);"
)

you may have to break out different blocks based on settings.DATABASES['default']['ENGINE']

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文