如何仅在管理界面中显示 Django 身份验证消息?
题
Django 的身份验证消息对于通知 CMS 用户某些配置问题非常方便。问题是,如果您包含“django.core.context_processors.auth”上下文处理器,则消息会在每次页面加载时被删除,并且如果您想使用管理界面,则必须包含该处理器。
我尝试通过在匹配管理 url 之后/调用 admin.site.root 之前将该处理器添加到 TEMPLATE_CONTEXT_PROCESSORS 来绕过它,但似乎当时它已经导入了处理器列表。
那么有没有什么方法可以做到这一点,而不需要更改任何 Django 核心文件本身,并且直到最后一刻才从配置中完全忽略 django Auth 应用程序?
解决方案
如果 Django 消息系统对我的网站至关重要,我会将消息添加到我的视图中,例如:
- 与咆哮集成
- 一些 javascript 模式对话框,例如 jQuery 警报对话框
如果您确实需要对其进行破解,以便它们仅显示在管理页面中,那么最简单的解决方案是复制 django.contrib.core.context_processors.py 中的 auth 函数并将其放入您自己的应用程序目录中的 context_processors.py 中。在 CONTEXT_PROCESSORS 堆栈中使用它而不是 django.core 版本并修改它,以便它查看 REQUEST url 并且仅调用 user.get_and_delete_messages()
如果是管理网址。
不隶属于 StackOverflow