Django:重新发送激活链接视图



我正在尝试在"重新激活链接"的登录页面上放置一个链接

重新激活链接的模板如下:

{% extends 'base.html' %}
{% block title %}Forgot Your Password?{% endblock %}
{% block content %}
  <h1>Resend Account Activation</h1>
  <p>Enter your email address below, and we'll email the activation link.</p>
  <form method="POST">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Send me instructions!">
  </form>
</div>
{% endblock %}

我已将内置帐户/password_reset/用于password_reset。

如何创建重新激活电子邮件的视图。如何将类似的代码用于passwess_reset并用于repent_activation电子邮件

我有以下用于发送激活链接的代码。

def signup(request):
    if request.method == 'POST':
        print("inside post")
        form = MyUserCreationForm(request.POST)
        if form.is_valid():
            print("form.is_valid()")
            user = form.save(commit=False)
            user.is_active = False
            user.save()
            current_site = get_current_site(request)
            subject = 'Activate Your MySite Account'
            message = render_to_string('account_activation_email.html', {
                'user': user,
                'domain': current_site.domain,
                'uid': urlsafe_base64_encode(force_bytes(user.pk)).decode(),
                'token': account_activation_token.make_token(user),
            })
            user.email_user(subject, message)
            return redirect('account_activation_sent')
    else:
        print("else")
        form = MyUserCreationForm()
    print("ending before render")
    return render(request, 'signup.html', {'form': form})

class MyUserCreationForm(UserCreationForm):
    class Meta(UserCreationForm.Meta):
        model = User
        fields = ("email",)

path('signup/', views.signup, name='signup'),

我做了以下操作:

我创建了一个视图:

def resend_account_activation(request):
    if request.method == 'POST':
        form = ResendActivationLinkForm(request.POST)
        if form.is_valid():
            active_users = User._default_manager.filter(**{
                '%s__iexact' % User.get_email_field_name(): form.cleaned_data['email'],
                'is_active': False,
            })
            if active_users:
                print('****************************')
                print(active_users[0])
                current_site = get_current_site(request)
                subject = 'Activate Your MySite Account'
                message = render_to_string('account_activation_email.html', {
                    'user': active_users[0],
                    'domain': current_site.domain,
                    'uid': urlsafe_base64_encode(force_bytes(active_users[0].pk)).decode(),
                    'token': account_activation_token.make_token(active_users[0]),
                })
                active_users[0].email_user(subject, message)
                return redirect('account_activation_sent')
            else:
                return redirect('account_activation_sent')
    else:
        print("else")
        form = ResendActivationLinkForm()
    print("ending before render")
    return render(request, 'account_activation_resend.html', {'form': form})

和一个表格

class ResendActivationLinkForm(forms.Form):
    email = forms.EmailField(label=_("Email"), max_length=254)

现在我可以发送电子邮件并再次获得激活链接。

最新更新