我已经成功地在Django注册了一个账户,但是在显示验证电子邮件账户的成功消息时遇到了问题。我正在使用Django和Bootstrap进行我的项目,并且正在寻求如何显示和样式化这些消息的指导。当我试图返回这些消息时,我遇到了一个错误。您能提供帮助来正确地显示和处理这些消息吗?
accounts/views.py
class SignUp(CreateView,SuccessMessageMixin):
form_class = UserCreateForm
template_name = 'accounts/signup.html'
def get(self, request, *args, **kwargs):
form = self.form_class()
return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_active = False # Deactivate account till it is confirmed
user.save()
current_site = get_current_site(request)
subject = 'Activate Your Believer Account'
message = render_to_string('accounts/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, message)
success_registered_message = "You're register successfully"
verify_message = "Please verify your account from gmail"
return success_registered_message,verify_message
return render(request, self.template_name, {'form': form})
templates/accounts/signup.html
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
如果需要更多细节,请在评论中告诉我。我会用这些信息更新我的问题。谢谢。
2条答案
按热度按时间ovfsdjhp1#
我不想在任何其他页面重定向,我只是想留在他们同一页(注册页),并希望显示成功注册后的消息。
您希望网站采用Post-Redirect-Get模式。您可以在此处了解一些背景知识:http://www.theserverside.com/news/1365146/Redirect-After-Post如果想登陆同一个视图/模板,可以重定向到同一个视图。
关于我对消息框架的建议。在此更新您的代码以使用该框架。
这应该与您添加到模板中的内容兼容。
此外,请确保您的设置包含以下内容:
xqk2d5yq2#
https://docs.djangoproject.com/en/3.1/ref/contrib/messages/#adding-messages-in-class-based-views
SuccessMessageMixin有一个属性success_message,在您的情况下应将其更新为:
success_message=“您已成功注册,请通过gmail验证您的帐户”
您还应该重定向到所需页面,或者根据需要呈现当前页面