【发布时间】:2021-08-29 12:40:09
【问题描述】:
我有一个 DRF 服务器,我一直在尝试使用 PasswordResetForm 发送密码重置电子邮件。
我按预期收到了一封电子邮件,但在尝试发送重置密码时,我收到了:
{
"uid": [
"Invalid value"
]
}
经过一番调查,我发现在 Django 的 PasswordResetConfirmSerializer 的文件中,有一个导致该问题的条件导入 - 我正在使用 allauth,所以 它导入了错误的 @ 987654326@模块(使用其他模块):
# this imports the wrong uid_decoder
if 'allauth' in settings.INSTALLED_APPS:
from allauth.account.forms import default_token_generator
from allauth.account.utils import url_str_to_user_pk as uid_decoder
else:
from django.contrib.auth.tokens import default_token_generator
from django.utils.http import urlsafe_base64_decode as uid_decoder
有没有比编辑 dj_rest_auth 文件更好的方法来处理这个问题?
谢谢!
电子邮件发送代码,如果需要:
from django.conf import settings
from django.contrib.auth.forms import PasswordResetForm
def send_user_invite(email):
# send invitation to reset password & join the platform
form_options = {
"use_https": True,
"from_email": getattr(settings, "DEFAULT_FROM_EMAIL"),
# "request": request,
"subject_template_name": "registration/password_reset_subject.txt",
"email_template_name": "users/invite_with_password_reset.html",
"extra_email_context": {"reset_base_url": settings.RESET_BASE_URL},
}
form = PasswordResetForm(data={"email": email})
if form.is_valid():
form.save(**form_options)
【问题讨论】:
-
如果是,你能解决这个问题吗
-
a work around 我认为这是 dj-rest-auth 的错误
-
也许有。将我的解决方法作为评论发布在下面。
标签: python django django-rest-framework django-rest-auth