Как передать uidb64 и токен в шаблон электронной почты из пользовательской формы в Django - PullRequest
0 голосов
/ 10 марта 2020

У меня есть приложение Django, и я хочу сделать страницу восстановления пароля. У меня есть пользовательская форма, которая наследуется от PasswordResetForm. PasswordResetForm может передать uidb64 и token на emails/restore.html самостоятельно, но как это сделать самостоятельно в моей пользовательской форме? Теперь Django говорит мне:

Reverse for 'password_reset_confirm' not found. 'password_reset_confirm' is not a valid view function or pattern name.
1   {% autoescape off %}
2   http://{{ domain }}{% url 'Authentication:password_reset_confirm' uidb64=uid token=token %}
3   {% endautoescape %}

, потому что я ничего не передал в params. Как передать uidb64 и token?

forms.py

from django import forms
from django.contrib.auth.forms import User, PasswordResetForm, SetPasswordForm

...

class RestoreForm(PasswordResetForm):
    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = ["email"]

views.py

def request_restore_password(request):
    if request.method == 'POST':
        form = RestoreForm(data=request.POST)
        if form.is_valid():
            form.save(from_email=AdminEmail, email_template_name='emails/restore.html', request=request)
            return HttpResponse('123 for now')

    else:
        form = RestoreForm()
    return render(request, 'request_restore_password.html', {'form': form})

по электронной почте / восстановить. html

{% autoescape off %}
http://{{ domain }}{% url 'Authentication:password_reset_confirm' uidb64=uid token=token %}
{% endautoescape %}
...