{"title":"FAQ：管理","version":"5.1","locale":"zh-hans","docname":"faq/admin","url":"/zh-hans/5.1/faq/admin/","canonical":"https://djangodocs.dev/zh-hans/5.1/faq/admin/","summary":"无法登录。当我输入有效的用户名和密码后，页面再跳转到登录页面，没有显示任何错误信息。 Link to this heading # 登陆 cookie 没有被正确设置，这是因为由 Django 发出的 cookie 中的域名和浏览器页面的域名不匹配。可以通过修改设置中的 SESSION_COOKIE_DOMAIN…","html":"<h1>FAQ：管理<a class=\"heading-anchor\" href=\"#faq-the-admin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<section id=\"i-can-t-log-in-when-i-enter-a-valid-username-and-password-it-just-brings-up-the-login-page-again-with-no-error-messages\">\n<h2>无法登录。当我输入有效的用户名和密码后，页面再跳转到登录页面，没有显示任何错误信息。<a class=\"heading-anchor\" href=\"#i-can-t-log-in-when-i-enter-a-valid-username-and-password-it-just-brings-up-the-login-page-again-with-no-error-messages\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>登陆 cookie 没有被正确设置，这是因为由 Django 发出的 cookie 中的域名和浏览器页面的域名不匹配。可以通过修改设置中的 <a class=\"reference internal\" href=\"/zh-hans/5.1/ref/settings/#std-setting-SESSION_COOKIE_DOMAIN\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">SESSION_COOKIE_DOMAIN</span></code></a> 选项来匹配你的域名。例如，如果你需要在浏览器中访问 &quot;<a class=\"reference external\" href=\"https://www.example.com/admin/\">https://www.example.com/admin/</a>&quot;，设置 <code class=\"docutils literal notranslate\"><span class=\"pre\">SESSION_COOKIE_DOMAIN</span> <span class=\"pre\">=</span> <span class=\"pre\">'www.example.com'</span></code>。</p>\n</section>\n<section id=\"i-can-t-log-in-when-i-enter-a-valid-username-and-password-it-brings-up-the-login-page-again-with-a-please-enter-a-correct-username-and-password-error\">\n<h2>我无法登陆。当我输入有效的用户名和密码后，它又跳转到了登录界面，并且显示一个“请输入正确的用户名和密码”的错误。<a class=\"heading-anchor\" href=\"#i-can-t-log-in-when-i-enter-a-valid-username-and-password-it-brings-up-the-login-page-again-with-a-please-enter-a-correct-username-and-password-error\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>如果你确定你的用户名和密码都是对的，请检查你的用户账户中的 <a class=\"reference internal\" href=\"/zh-hans/5.1/ref/contrib/auth/#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_active</span></code></a> 和 <a class=\"reference internal\" href=\"/zh-hans/5.1/ref/contrib/auth/#django.contrib.auth.models.User.is_staff\" title=\"django.contrib.auth.models.User.is_staff\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_staff</span></code></a> 被设为 True。管理员页面只允许这两项同时被设为 True 的用户访问。</p>\n</section>\n<section id=\"how-do-i-automatically-set-a-field-s-value-to-the-user-who-last-edited-the-object-in-the-admin\">\n<h2>在管理面板中，如何将字段的值自动设置为最后编辑它的用户？<a class=\"heading-anchor\" href=\"#how-do-i-automatically-set-a-field-s-value-to-the-user-who-last-edited-the-object-in-the-admin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><a class=\"reference internal\" href=\"/zh-hans/5.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> 类提供了自定义钩子（hooks），它允许你使用请求中的详细数据来修改一个已保存的对象。你可以从request中取出当前的用户对象，然后通过自定义 <a class=\"reference internal\" href=\"/zh-hans/5.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model\" title=\"django.contrib.admin.ModelAdmin.save_model\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">save_model()</span></code></a> 钩子（hook）来更新一个反映用户编辑了的对象。参见 <a class=\"reference internal\" href=\"/zh-hans/5.1/ref/contrib/admin/#model-admin-methods\"><span class=\"std std-ref\">the documentation on ModelAdmin methods</span></a> 中的示例。</p>\n</section>\n<section id=\"how-do-i-limit-admin-access-so-that-objects-can-only-be-edited-by-the-users-who-created-them\">\n<h2>我们如何设定管理权限，以便对象只能由创建它们的用户进行编辑？<a class=\"heading-anchor\" href=\"#how-do-i-limit-admin-access-so-that-objects-can-only-be-edited-by-the-users-who-created-them\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><a class=\"reference internal\" href=\"/zh-hans/5.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> 类也提供了自定义沟子(Hook)来控制管理面板中的对象是否可见以及可修改。使用相同的技巧从 request 中提取出当前用户对象，然后自定义 <a class=\"reference internal\" href=\"/zh-hans/5.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_queryset\" title=\"django.contrib.admin.ModelAdmin.get_queryset\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_queryset()</span></code></a> 和 <a class=\"reference internal\" href=\"/zh-hans/5.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.has_change_permission\" title=\"django.contrib.admin.ModelAdmin.has_change_permission\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">has_change_permission()</span></code></a> 来控制管理面板中的对象是否可见以及可修改。</p>\n</section>\n<section id=\"my-admin-site-css-and-images-showed-up-fine-using-the-development-server-but-they-re-not-displaying-when-using-mod-wsgi\">\n<h2>管理界面的 CSS 和图片在开发模式下正常加载，但是在使用 mod_wsgi 进行部署的情况下却无法进行加载？<a class=\"heading-anchor\" href=\"#my-admin-site-css-and-images-showed-up-fine-using-the-development-server-but-they-re-not-displaying-when-using-mod-wsgi\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>请仔细阅读“如何利用 mod_wsgi 部署 Django”文档中的 <a class=\"reference internal\" href=\"/zh-hans/5.1/howto/deployment/wsgi/modwsgi/#serving-the-admin-files\"><span class=\"std std-ref\">部署 admin 模块的静态文件</span></a>。</p>\n</section>\n<section id=\"my-list-filter-contains-a-manytomanyfield-but-the-filter-doesn-t-display\">\n<h2>我的“list_filter”包含一个 ManyToManyField (多对多字段)，但过滤器不显示<a class=\"heading-anchor\" href=\"#my-list-filter-contains-a-manytomanyfield-but-the-filter-doesn-t-display\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>如果没有相关联的对象，Django 不会显示 <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> 过滤器。</p>\n<p>例如，如果您的 <a class=\"reference internal\" href=\"/zh-hans/5.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_filter\" title=\"django.contrib.admin.ModelAdmin.list_filter\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_filter</span></code></a> 包含 <a class=\"reference internal\" href=\"/zh-hans/5.1/ref/contrib/sites/\"><span class=\"doc\">sites</span></a>，并且你的数据库中没有站点，则不会显示“站点”过滤器。在这种情况下，按网站过滤将毫无意义。</p>\n</section>\n<section id=\"some-objects-aren-t-appearing-in-the-admin\">\n<h2>有些对象没有在管理中出现。<a class=\"heading-anchor\" href=\"#some-objects-aren-t-appearing-in-the-admin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>不一致的行计数可能由缺少外键值或由将外键字段错误地设置为 <a class=\"reference internal\" href=\"/zh-hans/5.1/ref/models/fields/#django.db.models.Field.null\" title=\"django.db.models.Field.null\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">null</span> <span class=\"pre\">=</span> <span class=\"pre\">False</span></code></a> 造成。如果你有一个指向不存在对象的  <a class=\"reference internal\" href=\"/zh-hans/5.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code></a> 的记录，并且包含的​​外键是 <a class=\"reference internal\" href=\"/zh-hans/5.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display\" title=\"django.contrib.admin.ModelAdmin.list_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_display</span></code></a>，将不会显示在管理更改列表中，因为 Django 模型正在声明未作用在数据库级别的完整性约束。</p>\n</section>\n<section id=\"how-can-i-customize-the-functionality-of-the-admin-interface\">\n<h2>如何个性化管理员后台接口的功能？<a class=\"heading-anchor\" href=\"#how-can-i-customize-the-functionality-of-the-admin-interface\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>你有几个选择。 如果您想要在 Django 自动生成的添加/更改表单上加载，您可以通过模型的类 Admin <span class=\"xref std std-ref\">js parameter &lt;modeladmin-asset-definitions&gt;`将任意 JavaScript 模块附加到页面上。 该参数是一个 URL 列表，作为字符串，指向将通过 ``&lt;script&gt;`</span> 标签包含在管理表单中的 JavaScript 模块。</p>\n<p>如果你想要更灵活的使用表单，请随意为管理模块编写自定义视图。 管理模块是由 Django 官方提供支持的模块，你可以编写自定义的视图关联到身份验证，检查权限，并完成任何他们需要做的业务逻辑。</p>\n<p>如果您想自定义管理界面的外观，请阅读下一个问题</p>\n</section>\n<section id=\"the-dynamically-generated-admin-site-is-ugly-how-can-i-change-it\">\n<h2>动态生成的管理页面太丑了。我该怎么换掉它？<a class=\"heading-anchor\" href=\"#the-dynamically-generated-admin-site-is-ugly-how-can-i-change-it\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>如果你不喜欢它，你可以通过修改 CSS 样式文件以及关联的图片来定制管理员界面。这个网站使用 HTML 语法和大量的 CSS 钩子，所以任何你想要的改变都应该可以通过修改 CSS 样式表来实现。</p>\n</section>\n<section id=\"what-browsers-are-supported-for-using-the-admin\">\n<span id=\"admin-browser-support\"></span><h2>Admin 适配了哪些浏览器？<a class=\"heading-anchor\" href=\"#what-browsers-are-supported-for-using-the-admin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>管理可以让使用人员通过最新版本的符合 Web 标准的现代浏览器来体验所有功能。 在台式机上，这意味着 Chrome、Edge、Firefox、Opera、Safari等主流浏览器都可以无障碍访问管理站点。</p>\n<p>在移动和平板电脑设备上，管理为符合 Web 标准的浏览器提供响应式体验。 这包括 Android 和 iOS 上的主要浏览器。</p>\n<p>在支持的浏览器之间可能会有细微的风格差异，例如，某些浏览器可能不支持圆角。在渲染页面的时候会认为这些是可接受的差异。</p>\n</section>\n<section id=\"what-assistive-technologies-are-supported-for-using-the-admin\">\n<h2>什么辅助技术支持使用管理界面？<a class=\"heading-anchor\" href=\"#what-assistive-technologies-are-supported-for-using-the-admin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>管理界面旨在与广泛的辅助技术兼容，但目前存在许多阻碍。支持的目标是所有最新版本的主要辅助技术，包括 Dragon、JAWS、NVDA、Orca、TalkBack、Voice Control、VoiceOver iOS、VoiceOver macOS、Windows 对比主题、ZoomText 和屏幕放大器。</p>\n</section>","rootId":"faq-the-admin","toc":[{"title":"无法登录。当我输入有效的用户名和密码后，页面再跳转到登录页面，没有显示任何错误信息。","anchor":"i-can-t-log-in-when-i-enter-a-valid-username-and-password-it-just-brings-up-the-login-page-again-with-no-error-messages","children":[]},{"title":"我无法登陆。当我输入有效的用户名和密码后，它又跳转到了登录界面，并且显示一个“请输入正确的用户名和密码”的错误。","anchor":"i-can-t-log-in-when-i-enter-a-valid-username-and-password-it-brings-up-the-login-page-again-with-a-please-enter-a-correct-username-and-password-error","children":[]},{"title":"在管理面板中，如何将字段的值自动设置为最后编辑它的用户？","anchor":"how-do-i-automatically-set-a-field-s-value-to-the-user-who-last-edited-the-object-in-the-admin","children":[]},{"title":"我们如何设定管理权限，以便对象只能由创建它们的用户进行编辑？","anchor":"how-do-i-limit-admin-access-so-that-objects-can-only-be-edited-by-the-users-who-created-them","children":[]},{"title":"管理界面的 CSS 和图片在开发模式下正常加载，但是在使用 mod_wsgi 进行部署的情况下却无法进行加载？","anchor":"my-admin-site-css-and-images-showed-up-fine-using-the-development-server-but-they-re-not-displaying-when-using-mod-wsgi","children":[]},{"title":"我的“list_filter”包含一个 ManyToManyField (多对多字段)，但过滤器不显示","anchor":"my-list-filter-contains-a-manytomanyfield-but-the-filter-doesn-t-display","children":[]},{"title":"有些对象没有在管理中出现。","anchor":"some-objects-aren-t-appearing-in-the-admin","children":[]},{"title":"如何个性化管理员后台接口的功能？","anchor":"how-can-i-customize-the-functionality-of-the-admin-interface","children":[]},{"title":"动态生成的管理页面太丑了。我该怎么换掉它？","anchor":"the-dynamically-generated-admin-site-is-ugly-how-can-i-change-it","children":[]},{"title":"Admin 适配了哪些浏览器？","anchor":"what-browsers-are-supported-for-using-the-admin","children":[]},{"title":"什么辅助技术支持使用管理界面？","anchor":"what-assistive-technologies-are-supported-for-using-the-admin","children":[]}],"breadcrumbs":[{"docname":"faq/index","title":"Django FAQ","url":"/zh-hans/5.1/faq/"}],"prev":{"docname":"faq/models","title":"FAQ：数据库和模型","url":"/zh-hans/5.1/faq/models/"},"next":{"docname":"faq/contributing","title":"FAQ：贡献代码","url":"/zh-hans/5.1/faq/contributing/"},"formats":{"html":"/zh-hans/5.1/faq/admin/","markdown":"/zh-hans/5.1/faq/admin.md","json":"/zh-hans/5.1/faq/admin.json"},"source":"https://github.com/django/django/blob/stable/5.1.x/docs/faq/admin.txt","official":"https://docs.djangoproject.com/zh-hans/5.1/faq/admin/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}