常见问题解答:行政管理

我无法登录。当我输入有效的用户名和密码时,它只会再次显示登录页面,没有错误消息。

登录cookie设置不正确,因为Django发送的cookie的域与浏览器中的域不匹配。尝试设置 SESSION_COOKIE_DOMAIN 设置以匹配您的域。例如,如果要在浏览器中访问“https://www.example.com/admin/”,请设置 SESSION_COOKIE_DOMAIN = 'www.example.com' .

我无法登录。当我输入有效的用户名和密码时,它会再次显示登录页面,并显示“请输入正确的用户名和密码”错误。

如果您确定您的用户名和密码正确,请确保您的用户帐户 is_activeis_staff 设置为真。管理站点只允许访问这两个字段都设置为true的用户。

如何自动将字段值设置为上次在管理员中编辑对象的用户?

这个 ModelAdmin 类提供自定义挂钩,允许您使用来自请求的详细信息在保存对象时转换该对象。从请求中提取当前用户,然后自定义 save_model() hook,您可以更新一个对象来反映编辑它的用户。见 the documentation on ModelAdmin methods 举个例子。

如何限制管理员访问,以便对象只能由创建对象的用户编辑?

这个 ModelAdmin 类还提供自定义挂钩,允许您控制管理中对象的可见性和可编辑性。使用从请求中提取用户的相同技巧, get_queryset()has_change_permission() 可用于控制管理中对象的可见性和可编辑性。

我的管理站点CSS和图片在使用开发服务器时显示得很好,但是在使用mod_wsgi时它们不会显示。

serving the admin files 在“如何将django与mod wsgi结合使用”文档中。

我的“列表过滤器”包含一个manytomanyfield,但过滤器不显示。

Django不会费心显示过滤器 ManyToManyField 如果没有相关对象。

例如,如果您的 list_filter 包括 sites ,并且您的数据库中没有站点,它将不会显示“站点”过滤器。在这种情况下,按网站过滤将是毫无意义的。

某些对象未显示在管理中。

行计数不一致可能是由于缺少外键值或外键字段被错误地设置为 null=False . 如果你有 ForeignKey 指向一个不存在的对象,并且包含该外键 list_display ,该记录将不会显示在管理变更列表中,因为django模型正在声明一个未在数据库级别实现的完整性约束。

如何自定义管理界面的功能?

你有几个选择。如果您想使用Django自动生成的添加/更改表单,可以通过模型的类管理将任意javascript模块附加到页面上。 js parameter . 该参数是一个URL列表,作为字符串,指向将通过 <script> 标签。

如果您希望通过调整自动生成的表单来获得更多的灵活性,请随时为管理员编写自定义视图。管理员由Django本身提供支持,您可以编写自定义视图,将其挂接到身份验证系统中,检查权限并执行其他任何需要执行的操作。

如果要自定义管理界面的外观,请阅读下一个问题。

动态生成的管理站点很难看!我怎样才能改变它?

我们喜欢它,但是如果您不同意,您可以通过编辑CSS样式表和/或关联的图像文件来修改管理网站的演示文稿。这个网站是用语义HTML和大量的CSS钩子构建的,所以您想做的任何更改都应该可以通过编辑样式表来实现。

使用admin支持哪些浏览器?

管理员为最新版本的符合web标准的现代浏览器提供了一个功能齐全的体验。在桌面上,这意味着Chrome、Edge、Firefox、Opera、Safari等。

在移动设备和平板电脑设备上,管理员为符合web标准的浏览器提供了快速响应的体验。这包括Android和iOS上的主要浏览器。

支持,取决于功能 may 浏览器之间的细微风格差异。这些都被认为是可接受的渲染变化。

使用管理员支持哪些辅助技术?

该管理员旨在与广泛的辅助技术兼容,但目前有许多拦截器。支持目标是所有最新版本的主要辅助技术,包括Dragon、JAWS、NVDA、Orca、Talkback、Voice Control、VoiceOver iOS、VoiceOver MacOS、Windows对比度主题、ZoomText和屏幕放大镜。