Django: Проблемы с пользовательской формой PasswordResetForm
Я просмотрел другие ответы и вопросы, и ничего из того, что я делаю, кажется, не работает. Мой пользовательский класс не преодолевает и не принимает класс или placeholder. Я хотел бы попытаться настроить это, чтобы очистить его на моем html, чтобы соответствовать моей теме. Единственное, о чем я подумал, это то, что я использую url Path неправильно, но с моей пользовательской ссылкой на вид я не знаю, как это правильно реализовать.
Форма:
from django.contrib.auth.forms import PasswordResetForm
class UserPasswordResetForm(PasswordResetForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Override the email widget
self.fields['email'].widget = forms.TextInput(
attrs={'class': 'form-style', 'type': 'email', 'required': 'required', 'placeholder': 'Email'})
Вид:
def password_reset_request(request):
if request.method == "POST":
password_reset_form = UserPasswordResetForm(request.POST)
if password_reset_form.is_valid():
data = password_reset_form.cleaned_data['email']
associated_users = CustomUser.objects.filter(Q(email=data))
if associated_users.exists():
for user in associated_users:
subject = "Password Reset Requested"
email_template_name = "members/password_reset_email.txt"
c = {
"email":user.email,
'domain':'127.0.0.1:8000',
'site_name': 'Website',
"uid": urlsafe_base64_encode(force_bytes(user.pk)),
"user": user,
'token': default_token_generator.make_token(user),
'protocol': 'http',
}
email = render_to_string(email_template_name, c)
try:
send_mail(subject, email, 'admin@example.com', [user.email], fail_silently=False)
except BadHeaderError:
return HttpResponse('Invalid header found.')
return redirect("/password_reset/done/")
password_reset_form = PasswordResetForm()
return render(request=request, template_name="members/password_reset.html", context={"password_reset_form": password_reset_form})
Шаблон:
{% extends 'members/base.html' %}
{% block content %}
{% load crispy_forms_tags %}
<h6 class="mb-0 pb-3">Reset Password</h6>
<div class="card-3d-wrap mx-auto">
<div class="card-3d-wrapper">
<div class="card-front">
<div class="center-wrap">
<div class="section text-center">
<form method="POST">
<p>Forgotten your password? Enter your email address below, and we'll email instructions for setting a new one.</p>
{% csrf_token %}
<div class="form-group">
{{ password_reset_form|crispy }}
</div>
</br>
<button class="btn btn-primary" type="submit">Send email</button>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
URL: Оба набора
path("password_reset", views.password_reset_request, name="password_reset"),
path('password_reset/done/', auth_views.PasswordResetDoneView.as_view(template_name='members/password_reset_done.html'), name='password_reset_done'),
path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(template_name="members/password_reset_confirm.html"), name='password_reset_confirm'),
path('reset/done/', auth_views.PasswordResetCompleteView.as_view(template_name='members/password_reset_complete.html'), name='password_reset_complete'),