【问题标题】:Django and sqlite email authenticationDjango 和 sqlite 电子邮件身份验证
【发布时间】:2011-12-08 04:24:30
【问题描述】:

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

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

【问题讨论】:

    标签: django sqlite email authentication


    【解决方案1】:

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

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

    【讨论】:

    • 表格是由使用模型类的 Django ORM 自动生成的。我必须手动去做我认为的更改,或者我可能错了,它在 post_syncdb 函数中是可行的?
    【解决方案2】:

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

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

    您可能需要根据settings.DATABASES['default']['ENGINE'] 拆分不同的块

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-10
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      相关资源
      最近更新 更多