如何纠正django中的帐户激活错误



我试图在提交注册表格后点击电子邮件激活链接以激活用户帐户,但我一直收到这个错误:The connection for this site is not secure; 127.0.0.1 sent an invalid response.。我应该被重定向到仪表板。由于新用户出现在数据库中,帐户已成功创建,但单击发送到电子邮件的激活链接会返回错误。虽然我正在学习一个教程,但我不明白为什么会出现这个问题。url.py

urlpatterns = [
path('activate/<slug:uidb64>/<slug:token>)/', views.account_activate, name='activate'),
path('dashboard/', views.dashboard, name='dashboard')
]

模板

account-activation_email.html:
{% autoescape off %}
Great {{ user.user_name }}!
Please click on the link below to activate your account
https://{{ domain }}{% url 'account:activate' uidb64=uid token=token %}
{% endautoescape %}
register.html
<form class="account-form p-4 rounded col-lg-10 mx-auto" method="post">
{% csrf_token %}
<h3 class="mb-2 font-weight-bold">Create an account</h3>
<p class="mb-4">Sign Up</p>
<label>{{ form.user_name.label }}<span class="text-muted small">
(Required)</span></label>
{{ form.user_name }}
<label>{{ form.email.label}}<span class="text-muted small">
(Required)</span></label>
{{ form.email }}
<label>{{ form.company.label}}<span class="text-muted small">
(Required)</span></label>
{{ form.company }}
<label>{{ form.license_number.label}}<span class="text-muted small">
(Required)</span></label>
{{ form.license_number }}
<label>{{ form.state.label}}<span class="text-muted small">
(Required)</span></label>
{{ form.state }}
<label>{{ form.city.label}}<span class="text-muted small">
(Required)</span></label>
{{ form.city }}
<label>{{ form.address.label}}<span class="text-muted small">
(Required)</span></label>
{{ form.address }}
<label>{{ form.postcode.label}}<span class="text-muted small">
(Required)</span></label>
{{ form.postcode }}
<label>{{ form.phone_number.label}}<span class="text-muted small">
(Required)</span></label>
{{ form.phone_number }}
<label>{{ form.password.label}}<span class="text-muted mb-4">
</span></label>
<small class="form-text text-muted mb-4 small">
At least 8 characters and 1 digit
</small>
{{ form.password }}
<label>{{ form.password2.label}}<span class="text-muted small">
(Required)</span></label>
{{ form.password2 }}
<button class="btn btn-primary btn-block py-2 mb-4 mt-5 fw500 w-100" type="submit">Register</button>
<p class="text-center">
<a>Already have an account?</a>
</p>
</form>

views.py

def account_register(request):
#   if request.user.is_authenticated:
#       return redirect('account:dashboard')
if request.method == 'POST':
registerForm = RegistrationForm(request.POST)
if registerForm.is_valid():
user = registerForm.save(commit=False)
user.email = registerForm.cleaned_data['email']
user.set_password(registerForm.cleaned_data['password'])
user.is_active = False
user.save()
current_site = get_current_site(request)
subject = 'Activate your Account'
message = render_to_string('account/registration/account_activation_email.html', {
'user': user,
'domain': current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
'token': account_activation_token.make_token(user),
})
user.email_user(subject=subject, message=message)
return HttpResponse('registered succesfully and activation sent')
else:
registerForm = RegistrationForm()
return render(request, 'account/registration/register.html', {'form': registerForm})

def account_activate(request, uidb64, token):
try:
uid = force_text(urlsafe_base64_decode(uidb64))
user = UserBase.objects.get(pk=uid)
except(TypeError, ValueError, OverflowError, user.DoesNotExist):
user = None
if user is not None and account_activation_token.check_token(user, token):
user.is_active = True
user.save()
login(request, user)
return redirect('account:dashboard')
else:
return render(request, 'account/registration/activation_invalid.html')

经过一番研究,我发现出现错误是因为我使用的是本地服务器,而不是http。

最新更新