[英]Remove 'username' field from django-allauth
當 django-registration 不支持 django 1.5 和自定義用戶模型時。 我正在嘗試使用 django-allauth,乍一看它是很棒的產品。
我遇到的問題 - 需要用戶名字段,但在我的應用程序中我沒有用戶名。 所以,allauth 文檔說:
**Available settings:**
ACCOUNT_AUTHENTICATION_METHOD (="username" | "email" | "username_email")
指定要使用的登錄方法——用戶是通過輸入用戶名、電子郵件地址還是兩者之一登錄。
好的,我完成了,但出現錯誤:
AssertionError at /accounts/signup/
No exception supplied
模型.py:
class MyUser(AbstractBaseUser, PermissionsMixin):
title = models.CharField ('Name', max_length=100)
email = models.EmailField('Email', max_length=255, unique=True)
...
設置.py
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = ('email')
AUTH_USER_MODEL = 'internboard.MyUser'
我在做什么錯?
謝謝,我找到了適合我的任務的正確設置:
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
如果您遇到錯誤django.core.exceptions.FieldDoesNotExist: Account has no field named 'username'
with reference USER_MODEL_USERNAME_FIELD
in the stacktrace,您還需要將ACCOUNT_USER_MODEL_USERNAME_FIELD
設置為None
(或適合您的用例的字段)。 所需的全套設置如下:
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_USERNAME_REQUIRED = False
此設置在自定義用戶模型的 django-allauth 文檔中有更詳細的解釋,默認設置在Configuration 中概述。
對於自定義用戶模型,可能的原因可能是以下任何一種;
a) 如果您已經完全消除了“用戶名”作為模型中的字段,那么請確保在您的模型中定義變量:
USERNAME_FIELD = 'email'
另外,請確保在電子郵件的字段定義中,字段屬性;
unique = True
也包括在內。
b) 在您的自定義用戶管理(必須強制配置)中,必須定義 form 和 add_form 變量以繼承自“ModelForm”或 UserCreationForm(對於 add_form 變量)。
c) 如果您繼承了 allauth 的注冊表單,那么您必須在設置中聲明:
ACCOUNT_USER_MODEL_USERNAME_FILED = None
最重要的是,確保您編寫測試以確保表單發布數據並保存到數據庫。 謝謝。 希望有人覺得這有幫助..... 請記住,這可能很難,但永遠不可能!!! 快樂'Djangoing'....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.