常见问题:管理员¶
我无法登录。当我输入有效的用户名和密码时,它只是再次显示登录页面,没有任何错误消息。¶
登录 Cookie 设置不正确,因为 Django 发送的 Cookie 域名与浏览器中的域名不匹配。尝试将SESSION_COOKIE_DOMAIN
设置设置为与您的域名匹配。例如,如果您在浏览器中访问“https://www.example.com/admin/”,请设置 SESSION_COOKIE_DOMAIN = 'www.example.com'
。
我无法登录。当我输入有效的用户名和密码时,它会再次显示登录页面,并显示“请输入正确的用户名和密码”错误。¶
如果您确定您的用户名和密码正确,请确保您的用户帐户已将is_active
和 is_staff
设置为 True。管理员站点仅允许访问这两个字段都设置为 True 的用户。
如何在管理员中自动将字段的值设置为最后编辑该对象的用户的用户名?¶
ModelAdmin
类提供自定义钩子,允许您使用请求中的详细信息转换保存的对象。通过从请求中提取当前用户并自定义 save_model()
钩子,您可以更新对象以反映编辑它的用户。请参阅 ModelAdmin 方法文档 以获取示例。
如何限制管理员访问权限,以便对象只能由创建它们的用户的编辑?¶
ModelAdmin
类还提供自定义钩子,允许您控制管理员中对象的可见性和可编辑性。使用从请求中提取用户的相同技巧,get_queryset()
和 has_change_permission()
可用于控制管理员中对象的可见性和可编辑性。
我的管理员站点 CSS 和图像在使用开发服务器时显示正常,但在使用 mod_wsgi 时却无法显示。¶
请参阅“如何使用 Django 与 mod_wsgi”文档中的 提供管理员文件。
我的“list_filter”包含一个 ManyToManyField,但过滤器没有显示。¶
如果没有任何相关对象,Django 将不会显示 ManyToManyField
的过滤器。
例如,如果您的 list_filter
包含 站点,并且数据库中没有任何站点,则不会显示“站点”过滤器。在这种情况下,按站点过滤将毫无意义。
某些对象未出现在管理员中。¶
不一致的行数可能是由于缺少外键值或外键字段错误地设置为 null=False
造成的。如果您有一个记录,其 ForeignKey
指向一个不存在的对象,并且该外键包含在 list_display
中,则该记录将不会显示在管理员更改列表中,因为 Django 模型声明了一个未在数据库级别实现的完整性约束。
如何自定义管理员界面的功能?¶
您可以选择几种方法。如果您想在 Django 自动生成的添加/更改表单之上附加内容,您可以通过模型的类 Admin js 参数 将任意 JavaScript 模块附加到页面。该参数是一个 URL 列表(作为字符串),指向将在管理员表单中通过 <script>
标签包含的 JavaScript 模块。
如果您需要比调整自动生成的表单更高的灵活性,您可以随意为管理员编写自定义视图。管理员本身由 Django 提供支持,您可以编写自定义视图来连接到身份验证系统,检查权限并执行其他任何需要执行的操作。
如果您想自定义管理员界面的外观,请阅读下一个问题。
动态生成的管理员站点太丑了!我该如何更改它?¶
我们很喜欢它,但如果您不同意,您可以通过编辑 CSS 样式表和/或关联的图像文件来修改管理员站点的外观。该站点使用语义 HTML 和大量的 CSS 钩子构建,因此您可以通过编辑样式表来进行任何所需的更改。
使用管理员支持哪些浏览器?¶
管理员为最新版本的现代、符合 Web 标准的浏览器提供了全功能体验。在桌面上,这意味着 Chrome、Edge、Firefox、Opera、Safari 等。
在移动设备和平板电脑上,管理员为符合 Web 标准的浏览器提供了响应式体验。这包括 Android 和 iOS 上的主要浏览器。
根据功能支持,浏览器之间 *可能* 会存在细微的风格差异。这些被认为是渲染中的可接受差异。
使用管理员支持哪些辅助技术?¶
管理员旨在与各种辅助技术兼容,但目前存在许多障碍。支持目标是所有最新版本的常用辅助技术,包括 Dragon、JAWS、NVDA、Orca、TalkBack、语音控制、VoiceOver iOS、VoiceOver macOS、Windows 对比度主题、ZoomText 和屏幕放大器。