def register_view(request): if request.method == 'POST': form = UserCreationForm(request.POST) if form.is_valid(): password1 = form.cleaned_data.get('password1') password2 = form.cleaned_data.get('password2') if password1 != password2: messages.error(request, "两次密码输入不一致,请重新输入") return render(request, 'register.html', {'form': form}) form.save() messages.success(request, "注册成功") return redirect('login') else: form = UserCreationForm() return render(request, 'register.html', {'form': form}) 两次密码不一致和注册成功不限时是为什么
时间: 2024-03-07 12:50:23 浏览: 75
如果您的 Django 程序中出现 "两次密码输入不一致,请重新输入" 和 "注册成功" 不限时的情况,可能是因为 Django 的消息框架没有正确地配置。
Django 消息框架是一个用于在 Web 应用程序中传递一次性通知消息的框架。消息可以是成功消息、错误消息、警告消息或信息消息。它们通常用于在重定向之后向用户显示反馈。
默认情况下,Django 使用 Cookie 存储消息,并在下一次请求时将它们显示出来。但是,如果您的浏览器禁用了 Cookie,或者您在 Django 设置中禁用了 Cookie 后端,那么消息可能会显示不正确或不显示。
为了解决这个问题,您可以使用其他的消息存储后端,例如会话存储后端。在 Django 设置中,您可以将消息存储后端设置为会话存储后端,如下所示:
```python
# settings.py
MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'
```
这将使用会话存储后端来存储消息,而不是默认的 Cookie 存储后端。
另外,如果您使用了模板继承,您需要将消息框架的模板标签添加到 base.html 文件中,如下所示:
```html
<!-- base.html -->
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% block content %}
{% endblock %}
```
在上面的代码中,我们使用 if 语句检查是否有消息。如果有消息,我们将它们渲染为一个无序列表,并将消息标签添加为 class 属性。在子模板中,我们可以使用 {% extends 'base.html' %} 引用 base.html 模板,并在 {% block content %} 标记中添加子模板的内容。
希望这可以帮助您解决您的问题!
阅读全文