Django Сброс пароля пользователя, MongoDB для хранения информации о пользователе
Я работаю над Django для сброса пароля пользователя. Но вся моя информация о пользователях хранится в MongoDB, а не в стандартной таблице User.
Все примеры, приведенные в StackOverflow и других местах, используют механизм аутентификации пользователя по умолчанию, который мне не помогает.
Мне нужно генерировать ссылку на электронную почту, когда пользователю нужно сбросить пароль.
Forms.py
class EmailForPasswdChange(UserCreationForm):
username = forms.CharField(max_length = 20, widget=forms.TextInput(attrs={'placeholder': 'Enter your username'}), required=True)
password1 = forms.CharField(max_length = 20, widget=forms.TextInput(attrs={'placeholder': 'Enter your username'}), required=False)
password2 = forms.CharField(max_length = 20, widget=forms.TextInput(attrs={'placeholder': 'Enter your username'}), required=False)
class Meta:
model = User
fields = [
'username',
]
Views.py
def sendEmail(request):
if request.method == 'POST':
form = EmailForPasswdChange(request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.is_active =False
current_site = get_current_site(request)
username = request.POST.get('username')
print(username)
subject = 'Your Request for Password Reset'
message = "Your Password will be reset"
message = render_to_string('email_activation_link.html', {
'username':username,
'domain':current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(username)),
'token': token,
})
from_email = settings.EMAIL_HOST_USER
recipient_list = (email,)
print (recipient_list)
send_mail(subject, message, from_email, recipient_list)
return render (request, 'user/forgotpasswd.html', {'inform': "EMail sent for resetting Password"})
else:
print (form.errors)
return render (request, 'user/forgotpasswd.html', {'inform': "EMail Not sent"})
Поскольку я настроил UserCreationForm, при выводе шаблона, если я ввожу имя пользователя, пароль которого должен быть сброшен, так как он уже существует в SQLite DB, выдает ошибку.
Если я изменю его на forms.Form, я не смогу сгенерировать токен, поскольку у меня нет объекта пользователя.
Помогите кто-нибудь, пожалуйста
Спасибо