首页 > 解决方案 > 在 DJANGO(REST) 中登录时删除用户名字段

问题描述

我最近想在我的 Django REST API 中删除注册所需的用户名字段。所以我在我的中添加了以下几行settings.py

ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False

注册时不再需要用户名。但是当用户尝试登录时,它仍然需要用户名,否则我会得到一个{'non_field_errors': ['Unable to log in with provided credentials.']}响应。我还注意到,当用户仅使用电子邮件地址注册时,django 会获取电子邮件地址中 @ 符号之前的所有字符,并将其作为用户名保存在数据库中。

我的问题是:

我怎样才能在登录时删除用户名。因此,唯一需要登录的是电子邮件和密码。我试图在不制作自定义用户模型的情况下实现这一目标。

分别在注册和登录时的当前情况示例:

#Registration
registartion_info ={"email":"achie@gmail.com", "password1":"password","password2":"password"}
registration_url = 'http://127.0.0.1:8000/users/registration/'
response = requests.post(url,json= registartion_info)

#Login
login_info ={"username":"achie","email":"achie@gmail.com", "password":"password"}
login_url = 'http://127.0.0.1:8000/users/login/'
response = requests.post(url,json= login_info)

我希望分别如何注册和登录的示例:

#Registration
registartion_info ={"email":"achie@gmail.com", "password1":"password","password1":"password"}
registration_url = 'http://127.0.0.1:8000/users/registration/'
response = requests.post(url,json= registartion_info)

#Login
login_info ={"email":"achie@gmail.com", "password":"password"}
login_url = 'http://127.0.0.1:8000/users/login/'
response = requests.post(url,json= login_info)

标签: djangodjango-rest-framework

解决方案


推荐阅读