Djoser override reset password email с шаблоном
Я использую Django rest framework и Djoser для аутентификации и регистрации пользователей.
Я выполнил часть активации по шаблону. Но теперь проблема в том, что я хочу использовать html шаблон для восстановления пароля. Я создал страницу html-формы для отправки формы сброса пароля. Когда я нажимаю на submit, она не принимает новый пароль и сброшенный пароль по методу post. выдавая ошибку.
Код работает на postmen, но я получаю ошибку, когда отправляю его через html шаблон
Вот мой djoser settings.py
DJOSER = {
'LOGIN_FIELD': 'email',
'USER_CREATE_PASSWORD_RETYPE': True,
'USERNAME_CHANGED_EMAIL_CONFIRMATION': True,
'PASSWORD_CHANGED_EMAIL_CONFIRMATION': True,
'SEND_CONFIRMATION_EMAIL': True,
'SET_USERNAME_RETYPE': True,
'SET_PASSWORD_RETYPE': True,
'PASSWORD_RESET_CONFIRM_URL': 'password/reset/confirm/{uid}/{token}',
'USERNAME_RESET_CONFIRM_URL': 'email/reset/confirm/{uid}/{token}',
'ACTIVATION_URL': 'activate/{uid}/{token}',
'SEND_ACTIVATION_EMAIL': True,
'EMAIL':
{
'activation': 'user_profile.email.ActivationEmail',
'confirmation':'user_profile.email.ConfirmationEmail',
'password_reset':'user_profile.email.PasswordResetEmail',
'password_changed_confirmation':'user_profile.email.PasswordChangedConfirmationEmail'
},
'SERIALIZERS': {
'user_create': 'user_profile.serializer.UserSerializer',
'user': 'user_profile.serializer.UserSerializer',
}
}
views.py
class ResetPasswordView(View):
def get (self, request, uid, token):
return render(request, 'reset_password.html')
def post (self, request,uid,token):
new_password=requests.post.get("new_password")
re_new_password=requests.post.get("re_new_password")
payload = json.dump({'uid': uid, 'token': token, 'new_password': new_password, 're_new_password': re_new_password})
protocol = 'https://' if request.is_secure() else 'http://'
web_url = protocol + request.get_host() + '/'
password_reset_url = "users/reset_password_confirm/" # url used for activate user
password_post_url = web_url + AUTHENTICATION_BASE_ROUTE + password_reset_url
response = requests.post(password_post_url,data=payload)
return HttpResponse(response.text)
urls.py
re_path(r'^password/reset/confirm/(?P<uid>[\w-]+)/(?P<token>[\w-]+)/$', ResetPasswordView.as_view()),
reset_password.html
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<div class="container">
<h1>Register</h1>
<label for="psw"><b>Repeat Password</b></label>
<input type="password" placeholder="Enter Password" name="new_password" id="new_password" required>
<label for="psw-repeat"><b>Repeat Password</b></label>
<input type="password" placeholder="Repeat Password" name="re_new_password" id="re_new_password" required>
<hr>
<button type="submit" class="registerbtn">SUBMIT</button>
</div>
</form>
email.py
from djoser import email
class ActivationEmail(email.ActivationEmail):
template_name = 'activation.html'
class ConfirmationEmail(email.ConfirmationEmail):
template_name = 'confirmation_email.html'
class PasswordResetEmail(email.PasswordResetEmail):
template_name = 'password_reset_email.html'
class PasswordChangedConfirmationEmail(email.PasswordChangedConfirmationEmail):
template_name = 'password_changed_confirmation_email.html'
urls.py
AUTHENTICATION_BASE_ROUTE = 'authentication/v2/'
Пожалуйста, сообщите мне, чего мне не хватает в шаблоне