OK, vì vậy đây là giải pháp mà tôi đã đưa ra. Nó có thể không phải là đẹp nhất, nhưng nó làm việc cho tôi.
này sẽ được thêm vào views.py
from .forms import ResendActivationEmailForm
from django.core import signing
from django.contrib.sites.shortcuts import get_current_site
from django.template.loader import render_to_string
def resend_activation_email(request):
email_body_template = 'registration/activation_email.txt'
email_subject_template = 'registration/activation_email_subject.txt'
if not request.user.is_anonymous():
return HttpResponseRedirect('/')
context = Context()
form = None
if request.method == 'POST':
form = ResendActivationEmailForm(request.POST)
if form.is_valid():
email = form.cleaned_data["email"]
users = User.objects.filter(email=email, is_active=0)
if not users.count():
form._errors["email"] = ["Account for email address is not registered or already activated."]
REGISTRATION_SALT = getattr(settings, 'REGISTRATION_SALT', 'registration')
for user in users:
activation_key = signing.dumps(
obj=getattr(user, user.USERNAME_FIELD),
salt=REGISTRATION_SALT,
)
context = {}
context['activation_key'] = activation_key
context['expiration_days'] = settings.ACCOUNT_ACTIVATION_DAYS
context['site'] = get_current_site(request)
subject = render_to_string(email_subject_template,
context)
# Force subject to a single line to avoid header-injection
# issues.
subject = ''.join(subject.splitlines())
message = render_to_string(email_body_template,
context)
user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL)
return render(request, 'registration/resend_activation_email_done.html')
if not form:
form = ResendActivationEmailForm()
context.update({"form" : form})
return render(request, 'registration/resend_activation_email_form.html', context)
này sẽ được thêm vào forms.py
class ResendActivationEmailForm(forms.Form):
email = forms.EmailField(required=True)
Tôi đã một mẫu mới trong đăng ký gọi resend_activation_email_form.html được sử dụng khi email đã được gửi lại nhưng tôi đã sử dụng chính xác cùng một mẫu để gửi email.
Tôi đã dựa trên email này vì tôi đã sử dụng các email duy nhất, nhưng có thể hợp lý hơn khi dựa trên tên người dùng vì nó được xác định là duy nhất bởi đăng ký django.
Bạn đã cố gắng nhập RegistrationProfile từ đăng ký – marcusshep
bạn có ý nghĩa gì khi gửi lại biểu mẫu kích hoạt? Điều đó không có ý nghĩa gì cả. Ý của bạn là gửi lại email kích hoạt? Đây có lẽ là lý do tại sao câu hỏi của bạn không nhận được trả lời trước khi bạn phát hành số tiền thưởng – e4c5
Tôi đã thử nhập RegistrationProfile và có, tôi muốn gửi lại (hoặc gửi một email kích hoạt mới) – HenryM