python - 在 LogoutView 上显示消息
问题描述
我正在使用消息框架来处理基本的事情,比如用户登录时的成功消息。这工作正常。
但是,当用户注销时,我无法让它工作。我不是网络开发人员,所以对 django 不是特别强,所以不确定我做错了什么 - 有类似的问题: 注销 Django 时的 django 消息 如何使用 django.contrib.auth 添加注销成功消息? 使用信号的解决方案-在尝试之前,我想了解为什么下面的代码不起作用。我显然错过了一些东西!
请注意,在我的模板中,如果没有消息,我添加了一个条件来打印一些文本 - 该文本确实会打印出来,所以我的 messages.html 肯定被包含在内。
视图.py
class LogoutFormView(SuccessMessageMixin,LogoutView):
template_name = 'users/logout.html'
success_message = "Successfully logged out."
class login_view(SuccessMessageMixin,LoginView):
template_name = 'users/login.html'
success_message = "Successfully logged in."
def get_success_url(self):
return reverse('recordings:projects')
消息.html
{% if messages %}
{% for message in messages %}
<div class="alert {{ message.tags }} alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span
aria-hidden="true">×</span> </button>
{{ message }}
</div>
{% endfor %}
{% endif %}
在模板中,我的登录重定向和 logout.html 都扩展了:
<div class="container-fluid mt-3 pl-5 pr-5">
{% block messages %}
{% if messages %}
test-messages
{% else %}
test-no-messages
{% endif %}
{% include "common/messages.html" %}
{% endblock %}
</div>
解决方案
LogoutView
is not a FormView
so using theSuccessMessageMixin
在这里没有意义,因为它不会做任何事情
LogoutView
调用该logout
方法和注销方法调用 request.session.flush()这将在使用SessionStorage后端时删除所有消息
您可以转而使用CookieStorage后端,因为我认为这不会受到影响,request.session.flush
或者您可以覆盖的dispatch
方法LogoutView
并在调用后添加消息,request.session.flush
尽管我不确定这是否会起作用
def dispatch(self, request, *args, **kwargs):
response = super().dispatch(request, *args, **kwargs)
messages.add_message(request, messages.INFO, 'Successfully logged out.')
return response
推荐阅读
- sql-server - SQL Server:为没有游标或函数的每条记录运行单独的 CTE
- excel - 如何在 Excel 中自动生成发票编号?
- tcp - 了解 Wireshark 中的 TCP RST
- c++ - 返回 const 对象引用(getter)和仅返回字符串有什么区别?
- c++ - 在单链表中重载赋值运算符
- java - Maven:java.lang.NoClassDefFoundErrorexception,但 jar 以 .m2 格式下载
- twilio - Twilio 电话会议参与者能否看到其他参与者的号码?
- java - 无法在 Android Studio 中检测到 textview 字段。无法解析文本视图 ID
- react-native - React Native - 如何在 TouchableOpacity 中填充图像?
- java - AWS EMR 同步运行 spark 作业/步骤