{"title":"django.contrib.auth","version":"5.2","locale":"zh-hans","docname":"ref/contrib/auth","url":"/zh-hans/5.2/ref/contrib/auth/","canonical":"https://djangodocs.dev/zh-hans/5.2/ref/contrib/auth/","summary":"该文档提供了 Django 认证系统组件的 API 。有关更多这些组件的用例，或需要自定义认证与鉴权，请参阅认证主题指南。","html":"<h1><code class=\"docutils literal notranslate\">django.contrib.auth</code><a class=\"heading-anchor\" href=\"#django-contrib-auth\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>该文档提供了 Django 认证系统组件的 API 。有关更多这些组件的用例，或需要自定义认证与鉴权，请参阅 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/\"><span class=\"doc\">认证主题指南</span></a>。</p>\n<section id=\"user-model\">\n<h2><code class=\"docutils literal notranslate\">User</code> 模型<a class=\"heading-anchor\" href=\"#user-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">User</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<section id=\"fields\">\n<h3>字段<a class=\"heading-anchor\" href=\"#fields\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">User</span></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> 对象有如下字段：</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.username\">\n<span class=\"sig-name descname\">username</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.username\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>必要的。150 个字符或以下。用户名可包含字母数字、<code class=\"docutils literal notranslate\">_</code>、<code class=\"docutils literal notranslate\">&#64;</code>、<code class=\"docutils literal notranslate\">+</code>、<code class=\"docutils literal notranslate\">.</code> 和 <code class=\"docutils literal notranslate\">-</code> 字符。</p>\n<p>The <code class=\"docutils literal notranslate\">max_length</code> should be sufficient for many use cases. If you need\na longer length, please use a <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#specifying-custom-user-model\"><span class=\"std std-ref\">custom user model</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.first_name\">\n<span class=\"sig-name descname\">first_name</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.first_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>可选的（<a class=\"reference internal\" href=\"/zh-hans/5.2/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\">blank=True</code></a>）。150 个字符或更少。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.last_name\">\n<span class=\"sig-name descname\">last_name</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.last_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>可选的（<a class=\"reference internal\" href=\"/zh-hans/5.2/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\">blank=True</code></a>）。150 个字符或更少。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.email\">\n<span class=\"sig-name descname\">email</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.email\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>可选的（<a class=\"reference internal\" href=\"/zh-hans/5.2/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\">blank=True</code></a>）。电子邮件地址。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.password\">\n<span class=\"sig-name descname\">password</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.password\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>必需。密码的哈希值和元数据。（Django 不存储原始密码。）原始密码可以是任意长度，并且可以包含任何字符。此字段中的元数据可能会将密码标记为不可用。请参阅 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/passwords/\"><span class=\"doc\">密码文档</span></a>。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.groups\">\n<span class=\"sig-name descname\">groups</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.groups\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>多对多关系到 <a class=\"reference internal\" href=\"#django.contrib.auth.models.Group\" title=\"django.contrib.auth.models.Group\"><code class=\"xref py py-class docutils literal notranslate\">Group</code></a></p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.user_permissions\">\n<span class=\"sig-name descname\">user_permissions</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.user_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>多对多关系到 <a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\">Permission</code></a></p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_staff\">\n<span class=\"sig-name descname\">is_staff</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_staff\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>布尔值。允许此用户访问管理站点。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_active\">\n<span class=\"sig-name descname\">is_active</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_active\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>布尔值。将此用户帐户标记为活动。我们建议您将此标志设置为 <code class=\"docutils literal notranslate\">False</code> 而不是删除帐户。这样，如果您的应用程序有任何对用户的外键引用，外键就不会断开。</p>\n<p>这不一定能控制用户是否能登录。认证后端不一定需要检查 <code class=\"docutils literal notranslate\">is_active</code> 标志，但默认的后端（<a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend\" title=\"django.contrib.auth.backends.ModelBackend\"><code class=\"xref py py-class docutils literal notranslate\">ModelBackend</code></a>）和 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend\" title=\"django.contrib.auth.backends.RemoteUserBackend\"><code class=\"xref py py-class docutils literal notranslate\">RemoteUserBackend</code></a> 会检查。如果你想允许不活跃的用户登录，你可以使用 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.AllowAllUsersModelBackend\" title=\"django.contrib.auth.backends.AllowAllUsersModelBackend\"><code class=\"xref py py-class docutils literal notranslate\">AllowAllUsersModelBackend</code></a> 或者 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.AllowAllUsersRemoteUserBackend\" title=\"django.contrib.auth.backends.AllowAllUsersRemoteUserBackend\"><code class=\"xref py py-class docutils literal notranslate\">AllowAllUsersRemoteUserBackend</code></a>。在这种情况下，你还需要自定义 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\">AuthenticationForm</code></a> 所使用的 <code class=\"xref py py-class docutils literal notranslate\">LoginView</code>，因为它拒绝非活动用户。需要注意的是， <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.has_perm\" title=\"django.contrib.auth.models.User.has_perm\"><code class=\"xref py py-meth docutils literal notranslate\">has_perm()</code></a> 等权限检查方法，以及 Django 管理中的认证方法，都会对非活跃用户返回 <code class=\"docutils literal notranslate\">False</code>。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_superuser\">\n<span class=\"sig-name descname\">is_superuser</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_superuser\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>布尔值。将此用户视为拥有所有权限，而不会分配任何特定的权限。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.last_login\">\n<span class=\"sig-name descname\">last_login</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.last_login\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>用户最后一次登录的日期时间。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.date_joined\">\n<span class=\"sig-name descname\">date_joined</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.date_joined\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>帐户创建的日期/时间。</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"attributes\">\n<h3>属性<a class=\"heading-anchor\" href=\"#attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">User</span></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_authenticated\">\n<span class=\"sig-name descname\">is_authenticated</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_authenticated\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>只读属性，始终返回 <code class=\"docutils literal notranslate\">True</code> （匿名用户 <code class=\"docutils literal notranslate\">AnonymousUser.is_authenticated</code>  始终返回 <code class=\"docutils literal notranslate\">False</code> ）。这是一种判断用户是否已通过身份认证的方法。这并不意味着任何权限，也不会检查用户是否处于活动状态或是否具有有效会话。即使通常你会根据 <code class=\"docutils literal notranslate\">request.user</code> 检查这个属性，以确定它是否被 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware\" title=\"django.contrib.auth.middleware.AuthenticationMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">AuthenticationMiddleware</code></a> 填充（表示当前登录的用户），但是你应该知道该属性对于任何 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> 实例都返回 <code class=\"docutils literal notranslate\">True</code>。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_anonymous\">\n<span class=\"sig-name descname\">is_anonymous</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_anonymous\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>只读属性，总是 <code class=\"docutils literal notranslate\">False</code>。这是区分 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> 和 <a class=\"reference internal\" href=\"#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\">AnonymousUser</code></a> 对象的一种方式。一般来说，你应该优先使用 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_authenticated\" title=\"django.contrib.auth.models.User.is_authenticated\"><code class=\"xref py py-attr docutils literal notranslate\">is_authenticated</code></a> 来代替这个属性。</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"methods\">\n<h3>方法<a class=\"heading-anchor\" href=\"#methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">User</span></dt>\n<dd><dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_username\">\n<span class=\"sig-name descname\">get_username</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_username\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回用户的用户名。由于 <code class=\"docutils literal notranslate\">User</code> 模型可以被替换，你应该使用这个方法而不是直接引用用户名属性。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_full_name\">\n<span class=\"sig-name descname\">get_full_name</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_full_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.first_name\" title=\"django.contrib.auth.models.User.first_name\"><code class=\"xref py py-attr docutils literal notranslate\">first_name</code></a> 加上 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.last_name\" title=\"django.contrib.auth.models.User.last_name\"><code class=\"xref py py-attr docutils literal notranslate\">last_name</code></a>，中间有一个空格。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_short_name\">\n<span class=\"sig-name descname\">get_short_name</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_short_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.first_name\" title=\"django.contrib.auth.models.User.first_name\"><code class=\"xref py py-attr docutils literal notranslate\">first_name</code></a>。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.set_password\">\n<span class=\"sig-name descname\">set_password</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">raw_password</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.set_password\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>将用户的密码设置为给定的原始字符串，并进行密码哈希处理。不保存 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> 对象。</p>\n<p>当 <code class=\"docutils literal notranslate\">raw_password</code> 为 <code class=\"docutils literal notranslate\">None</code> 时，密码将被设置为不可用的密码，就像 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.set_unusable_password\" title=\"django.contrib.auth.models.User.set_unusable_password\"><code class=\"xref py py-meth docutils literal notranslate\">set_unusable_password()</code></a> 一样。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.check_password\">\n<span class=\"sig-name descname\">check_password</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">raw_password</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.check_password\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.acheck_password\">\n<span class=\"sig-name descname\">acheck_password</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">raw_password</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.acheck_password\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>异步版本</em>：<code class=\"docutils literal notranslate\">acheck_password()</code></p>\n<p>如果给定的原始字符串是用户的正确密码，返回 <code class=\"docutils literal notranslate\">True</code>。（密码哈希值用于比较）</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.set_unusable_password\">\n<span class=\"sig-name descname\">set_unusable_password</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.set_unusable_password\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>通过更新 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.password\" title=\"django.contrib.auth.models.User.password\"><code class=\"xref py py-attr docutils literal notranslate\">password</code></a> 字段中的元数据，将用户标记为未设置密码。这与密码为空字符串不同。此用户的 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.check_password\" title=\"django.contrib.auth.models.User.check_password\"><code class=\"xref py py-meth docutils literal notranslate\">check_password()</code></a> 永远不会返回 <code class=\"docutils literal notranslate\">True</code>。不会保存 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> 对象。</p>\n<p>如果针对现有外部源（例如 LDAP 目录）进行应用程序的身份认证，则可能需要这个功能。</p>\n<aside class=\"admonition-password-reset-restriction admonition\" role=\"note\">\n<p class=\"admonition-title\">密码重置限制</p>\n<p>用户如果使用不可用的密码，将无法通过 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#django.contrib.auth.views.PasswordResetView\" title=\"django.contrib.auth.views.PasswordResetView\"><code class=\"xref py py-class docutils literal notranslate\">PasswordResetView</code></a> 请求密码重置电子邮件。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.has_usable_password\">\n<span class=\"sig-name descname\">has_usable_password</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.has_usable_password\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>如果 <code class=\"xref py py-meth docutils literal notranslate\">set_unusable_password()</code> 被调用，返回 <code class=\"docutils literal notranslate\">False</code>。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_user_permissions\">\n<span class=\"sig-name descname\">get_user_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_user_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.aget_user_permissions\">\n<span class=\"sig-name descname\">aget_user_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.aget_user_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">aget_user_permissions()</code></p>\n<p>返回用户直接拥有的一组权限字符串。</p>\n<p>如果传入了 <code class=\"docutils literal notranslate\">obj</code>，则只返回这个特定对象的用户权限。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">aget_user_permissions()</code> method was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_group_permissions\">\n<span class=\"sig-name descname\">get_group_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_group_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.aget_group_permissions\">\n<span class=\"sig-name descname\">aget_group_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.aget_group_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">aget_group_permissions()</code></p>\n<p>返回用户通过他们的组拥有的一组权限字符串。</p>\n<p>如果传入了 <code class=\"docutils literal notranslate\">obj</code>，则只返回这个特定对象的组权限。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">aget_group_permissions()</code> method was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_all_permissions\">\n<span class=\"sig-name descname\">get_all_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_all_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.aget_all_permissions\">\n<span class=\"sig-name descname\">aget_all_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.aget_all_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">aget_all_permissions()</code></p>\n<p>返回用户拥有的一组权限字符串，包括通过组和用户的权限。</p>\n<p>如果传入了 <code class=\"docutils literal notranslate\">obj</code>，则只返回这个特定对象的权限。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">aget_all_permissions()</code> method was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.has_perm\">\n<span class=\"sig-name descname\">has_perm</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">perm</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.has_perm\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.ahas_perm\">\n<span class=\"sig-name descname\">ahas_perm</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">perm</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.ahas_perm\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">ahas_perm()</code></p>\n<p>如果用户拥有指定的权限，返回 <code class=\"docutils literal notranslate\">True</code>，其中 perm 的格式是 <code class=\"docutils literal notranslate\">&quot;&lt;app label&gt;.&lt;permission codename&gt;&quot;</code>。（参见 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#topic-authorization\"><span class=\"std std-ref\">权限</span></a> 的文档）。如果用户是不活跃的，这个方法将总是返回 <code class=\"docutils literal notranslate\">False</code>。对于活跃的超级用户，本方法将始终返回 <code class=\"docutils literal notranslate\">True</code>。</p>\n<p>如果传入了 <code class=\"docutils literal notranslate\">obj</code>，这个方法不会检查模型的权限，而是检查这个特定对象的权限。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">ahas_perm()</code> method was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.has_perms\">\n<span class=\"sig-name descname\">has_perms</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">perm_list</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.has_perms\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.ahas_perms\">\n<span class=\"sig-name descname\">ahas_perms</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">perm_list</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.ahas_perms\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">ahas_perms()</code></p>\n<p>如果用户拥有指定的每个权限，返回 <code class=\"docutils literal notranslate\">True</code>，其中每个 perm 的格式为 <code class=\"docutils literal notranslate\">&quot;&lt;app label&gt;.&lt;permission codename&gt;&quot;</code>。如果用户不活跃，本方法将总是返回 <code class=\"docutils literal notranslate\">False</code>。对于活跃的超级用户，本方法将始终返回 <code class=\"docutils literal notranslate\">True</code>。</p>\n<p>如果传入了 <code class=\"docutils literal notranslate\">obj</code>，这个方法不会检查模型的权限，而是检查这个特定对象的权限。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">ahas_perms()</code> method was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.has_module_perms\">\n<span class=\"sig-name descname\">has_module_perms</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">package_name</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.has_module_perms\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.ahas_module_perms\">\n<span class=\"sig-name descname\">ahas_module_perms</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">package_name</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.ahas_module_perms\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">ahas_module_perms()</code></p>\n<p>如果用户在给定的包（Django 应用标签）中有任何权限，则返回 <code class=\"docutils literal notranslate\">True</code>。如果用户不活跃，本方法将总是返回 <code class=\"docutils literal notranslate\">False</code>。如果是活跃的超级用户，本方法将始终返回 <code class=\"docutils literal notranslate\">True</code>。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">ahas_module_perms()</code> method was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.email_user\">\n<span class=\"sig-name descname\">email_user</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">subject</em>, <em class=\"sig-param\">message</em>, <em class=\"sig-param\">from_email<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.email_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sends an email to the user. If <code class=\"docutils literal notranslate\">from_email</code> is <code class=\"docutils literal notranslate\">None</code>, Django uses\nthe <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/settings/#std-setting-DEFAULT_FROM_EMAIL\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_FROM_EMAIL</code></a>. Any <code class=\"docutils literal notranslate\">**kwargs</code> are passed to the\nunderlying <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/email/#django.core.mail.send_mail\" title=\"django.core.mail.send_mail\"><code class=\"xref py py-func docutils literal notranslate\">send_mail()</code></a> call.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"manager-methods\">\n<h3>管理器方法<a class=\"heading-anchor\" href=\"#manager-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">UserManager</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"xref py py-class docutils literal notranslate\">User</code> 模型有一个自定义管理器，它有以下辅助方法（除了 <code class=\"xref py py-class docutils literal notranslate\">BaseUserManager</code> 提供的方法外）：</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager.create_user\">\n<span class=\"sig-name descname\">create_user</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">username</em>, <em class=\"sig-param\">email<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">password<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra_fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager.create_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager.acreate_user\">\n<span class=\"sig-name descname\">acreate_user</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">username</em>, <em class=\"sig-param\">email<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">password<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra_fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager.acreate_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">acreate_user()</code></p>\n<p>创建、保存并返回一个 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a>。</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.username\" title=\"django.contrib.auth.models.User.username\"><code class=\"xref py py-attr docutils literal notranslate\">username</code></a> 和 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.password\" title=\"django.contrib.auth.models.User.password\"><code class=\"xref py py-attr docutils literal notranslate\">password</code></a> 按给定设置。<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.email\" title=\"django.contrib.auth.models.User.email\"><code class=\"xref py py-attr docutils literal notranslate\">email</code></a> 的域名部分会自动转换为小写，返回的 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> 对象的 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a> 设置为 <code class=\"docutils literal notranslate\">True</code>。</p>\n<p>如果没有提供密码， <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.set_unusable_password\" title=\"django.contrib.auth.models.User.set_unusable_password\"><code class=\"xref py py-meth docutils literal notranslate\">set_unusable_password()</code></a> 将被调用。</p>\n<p>If no email is provided, <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.email\" title=\"django.contrib.auth.models.User.email\"><code class=\"xref py py-attr docutils literal notranslate\">email</code></a>\nwill be set to an empty string.</p>\n<p><code class=\"docutils literal notranslate\">extra_fields</code> 关键字参数被传递到 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> 的 <code class=\"docutils literal notranslate\">__init__</code> 方法中，允许在 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#auth-custom-user\"><span class=\"std std-ref\">自定义用户模型</span></a> 上设置任意字段。</p>\n<p>使用方法参见 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#topics-auth-creating-users\"><span class=\"std std-ref\">创建用户</span></a>。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">acreate_user()</code> method was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager.create_superuser\">\n<span class=\"sig-name descname\">create_superuser</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">username</em>, <em class=\"sig-param\">email<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">password<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra_fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager.create_superuser\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager.acreate_superuser\">\n<span class=\"sig-name descname\">acreate_superuser</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">username</em>, <em class=\"sig-param\">email<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">password<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra_fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager.acreate_superuser\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">acreate_superuser()</code></p>\n<p>与 <a class=\"reference internal\" href=\"#django.contrib.auth.models.UserManager.create_user\" title=\"django.contrib.auth.models.UserManager.create_user\"><code class=\"xref py py-meth docutils literal notranslate\">create_user()</code></a> 相同，但将 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_staff\" title=\"django.contrib.auth.models.User.is_staff\"><code class=\"xref py py-attr docutils literal notranslate\">is_staff</code></a> 和 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_superuser\" title=\"django.contrib.auth.models.User.is_superuser\"><code class=\"xref py py-attr docutils literal notranslate\">is_superuser</code></a> 设置为 <code class=\"docutils literal notranslate\">True</code>。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">acreate_superuser()</code> method was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager.with_perm\">\n<span class=\"sig-name descname\">with_perm</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">perm</em>, <em class=\"sig-param\">is_active<span class=\"o\">=</span><span class=\"default_value\">True</span></em>, <em class=\"sig-param\">include_superusers<span class=\"o\">=</span><span class=\"default_value\">True</span></em>, <em class=\"sig-param\">backend<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager.with_perm\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回拥有给定权限 <code class=\"docutils literal notranslate\">perm</code> 的用户，可以是 <code class=\"docutils literal notranslate\">&quot;&lt;app label&gt;.&lt;permission codename&gt;&quot;</code> 格式，也可以是 <a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\">Permission</code></a> 实例。如果没有找到拥有 <code class=\"docutils literal notranslate\">perm</code> 的用户，返回一个空的查询集。</p>\n<p>如果 <code class=\"docutils literal notranslate\">is_active</code> 为 <code class=\"docutils literal notranslate\">True</code> （默认），则只返回活跃用户，如果 <code class=\"docutils literal notranslate\">False</code>，则只返回非活跃用户。使用 <code class=\"docutils literal notranslate\">None</code> 返回所有用户，无论其是否处于活跃状态。</p>\n<p>如果 <code class=\"docutils literal notranslate\">include_superusers</code> 为 <code class=\"docutils literal notranslate\">True</code> （默认），结果将包括超级用户。</p>\n<p>如果传入了 <code class=\"docutils literal notranslate\">backend</code>，并且在 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\">AUTHENTICATION_BACKENDS</code></a> 中定义了，那么本方法将使用它。否则，它将使用 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\">AUTHENTICATION_BACKENDS</code></a> 中的 <code class=\"docutils literal notranslate\">backend</code>，如果只有一个的话，或者引发一个异常。</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n</section>\n<section id=\"anonymoususer-object\">\n<h2><code class=\"docutils literal notranslate\">AnonymousUser</code> 对象<a class=\"heading-anchor\" href=\"#anonymoususer-object\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.AnonymousUser\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">AnonymousUser</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.AnonymousUser\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\">django.contrib.auth.models.AnonymousUser</code></a> 是一个实现了 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">django.contrib.auth.models.User</code></a> 接口的类，有这些区别：</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/zh-hans/5.2/topics/db/models/#automatic-primary-key-fields\"><span class=\"std std-ref\">id</span></a> 总是 <code class=\"docutils literal notranslate\">None</code>。</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.username\" title=\"django.contrib.auth.models.User.username\"><code class=\"xref py py-attr docutils literal notranslate\">username</code></a> 总是空字符串。</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.get_username\" title=\"django.contrib.auth.models.User.get_username\"><code class=\"xref py py-meth docutils literal notranslate\">get_username()</code></a> 总是返回空字符串。</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_anonymous\" title=\"django.contrib.auth.models.User.is_anonymous\"><code class=\"xref py py-attr docutils literal notranslate\">is_anonymous</code></a> 是 <code class=\"docutils literal notranslate\">True</code> 而不是 <code class=\"docutils literal notranslate\">False</code>。</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_authenticated\" title=\"django.contrib.auth.models.User.is_authenticated\"><code class=\"xref py py-attr docutils literal notranslate\">is_authenticated</code></a> 是 <code class=\"docutils literal notranslate\">False</code> 而不是 <code class=\"docutils literal notranslate\">True</code>。</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_staff\" title=\"django.contrib.auth.models.User.is_staff\"><code class=\"xref py py-attr docutils literal notranslate\">is_staff</code></a> 和 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_superuser\" title=\"django.contrib.auth.models.User.is_superuser\"><code class=\"xref py py-attr docutils literal notranslate\">is_superuser</code></a> 总是 <code class=\"docutils literal notranslate\">False</code>。</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a> 总是 <code class=\"docutils literal notranslate\">False</code>。</p></li>\n<li><p><code class=\"xref py py-attr docutils literal notranslate\">group</code> 和 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.user_permissions\" title=\"django.contrib.auth.models.User.user_permissions\"><code class=\"xref py py-attr docutils literal notranslate\">user_permissions</code></a> 总是空的。</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.set_password\" title=\"django.contrib.auth.models.User.set_password\"><code class=\"xref py py-meth docutils literal notranslate\">set_password()</code></a>、<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.check_password\" title=\"django.contrib.auth.models.User.check_password\"><code class=\"xref py py-meth docutils literal notranslate\">check_password()</code></a>、<a class=\"reference internal\" href=\"/zh-hans/5.2/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> 和 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/models/instances/#django.db.models.Model.delete\" title=\"django.db.models.Model.delete\"><code class=\"xref py py-meth docutils literal notranslate\">delete()</code></a> 引发 <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#NotImplementedError\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\">NotImplementedError</code></a>。</p></li>\n</ul>\n</dd></dl>\n\n<p>在实践中，你可能不需要自己使用 <a class=\"reference internal\" href=\"#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\">AnonymousUser</code></a> 对象，但它们会被网络请求使用，在下一节中解释。</p>\n</section>\n<section id=\"permission-model\">\n<h2><code class=\"docutils literal notranslate\">Permission</code> 模型<a class=\"heading-anchor\" href=\"#permission-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Permission\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">Permission</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Permission\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<section id=\"id1\">\n<h3>字段<a class=\"heading-anchor\" href=\"#id1\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\">Permission</code></a> 对象有以下字段：</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">Permission</span></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Permission.name\">\n<span class=\"sig-name descname\">name</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Permission.name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>必要的。255 个字符或以下。例如：<code class=\"docutils literal notranslate\">'Can vote'</code>。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Permission.content_type\">\n<span class=\"sig-name descname\">content_type</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Permission.content_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Required. A foreign key to the\n<a class=\"reference internal\" href=\"/zh-hans/5.2/ref/contrib/contenttypes/#django.contrib.contenttypes.models.ContentType\" title=\"django.contrib.contenttypes.models.ContentType\"><code class=\"xref py py-class docutils literal notranslate\">ContentType</code></a> model.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Permission.codename\">\n<span class=\"sig-name descname\">codename</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Permission.codename\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>必要的。100 个字符或以下。例如：<code class=\"docutils literal notranslate\">'can_vote'</code>。</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"id2\">\n<h3>方法<a class=\"heading-anchor\" href=\"#id2\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\">Permission</code></a> 对象和其他 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/models/instances/\"><span class=\"doc\">Django 模型</span></a> 一样拥有标准的数据访问方法。</p>\n</section>\n</section>\n<section id=\"group-model\">\n<h2><code class=\"docutils literal notranslate\">Group</code> 模型<a class=\"heading-anchor\" href=\"#group-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Group\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">Group</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Group\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<section id=\"id3\">\n<h3>字段<a class=\"heading-anchor\" href=\"#id3\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"#django.contrib.auth.models.Group\" title=\"django.contrib.auth.models.Group\"><code class=\"xref py py-class docutils literal notranslate\">Group</code></a> 对象有以下字段：</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">Group</span></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Group.name\">\n<span class=\"sig-name descname\">name</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Group.name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>要求： 150 个字符或以下。允许使用任何字符。例如：<code class=\"docutils literal notranslate\">'Awesome Users'</code>。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Group.permissions\">\n<span class=\"sig-name descname\">permissions</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Group.permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>多对多字段到 <a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\">Permission</code></a>：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>group<span class=\"o\">.</span>permissions<span class=\"o\">.</span>set<span class=\"p\">([</span>permission_list<span class=\"p\">])</span>\ngroup<span class=\"o\">.</span>permissions<span class=\"o\">.</span>add<span class=\"p\">(</span>permission<span class=\"p\">,</span> permission<span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">)</span>\ngroup<span class=\"o\">.</span>permissions<span class=\"o\">.</span>remove<span class=\"p\">(</span>permission<span class=\"p\">,</span> permission<span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">)</span>\ngroup<span class=\"o\">.</span>permissions<span class=\"o\">.</span>clear<span class=\"p\">()</span>\n</code></pre></div>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n</section>\n<section id=\"validators\">\n<h2>验证器<a class=\"heading-anchor\" href=\"#validators\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.validators.ASCIIUsernameValidator\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">validators.</span><span class=\"sig-name descname\">ASCIIUsernameValidator</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.validators.ASCIIUsernameValidator\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>除了 <code class=\"docutils literal notranslate\">&#64;</code>、<code class=\"docutils literal notranslate\">.</code>、<code class=\"docutils literal notranslate\">+</code>、<code class=\"docutils literal notranslate\">-</code> 和 <code class=\"docutils literal notranslate\">_</code> 之外，只允许使用 ASCII 字母和数字的字段验证器。</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.validators.UnicodeUsernameValidator\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">validators.</span><span class=\"sig-name descname\">UnicodeUsernameValidator</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.validators.UnicodeUsernameValidator\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>除了 <code class=\"docutils literal notranslate\">&#64;</code>、<code class=\"docutils literal notranslate\">.</code>、<code class=\"docutils literal notranslate\">+</code>、<code class=\"docutils literal notranslate\">-</code> 和 <code class=\"docutils literal notranslate\">_</code> 之外，还允许使用 Unicode 字符的字段验证器。<code class=\"docutils literal notranslate\">User.username</code> 的默认验证器。</p>\n</dd></dl>\n\n</section>\n<section id=\"module-django.contrib.auth.signals\">\n<span id=\"login-and-logout-signals\"></span><span id=\"topics-auth-signals\"></span><h2>登录和注销的信号<a class=\"heading-anchor\" href=\"#module-django.contrib.auth.signals\"><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.2/topics/signals/\"><span class=\"doc\">信号</span></a>，可以在用户登录或退出时用于通知。</p>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.signals.user_logged_in\">\n<span class=\"sig-name descname\">user_logged_in</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.signals.user_logged_in\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>当用户成功登录时发送。</p>\n<p>用此信号发送的参数：</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\">sender</code></dt><dd><p>刚刚登录的用户的类。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">request</code></dt><dd><p>当前的 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> 实例。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">user</code></dt><dd><p>刚刚登录的用户的实例。</p>\n</dd>\n</dl>\n</dd></dl>\n\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.signals.user_logged_out\">\n<span class=\"sig-name descname\">user_logged_out</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.signals.user_logged_out\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>调用注销方法时发送。</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\">sender</code></dt><dd><p>如上所述：刚刚注销的用户的类，如果用户没有经过认证，则为 <code class=\"docutils literal notranslate\">None</code>。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">request</code></dt><dd><p>当前的 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> 实例。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">user</code></dt><dd><p>刚刚注销的用户实例，如果用户没有经过认证，则为 <code class=\"docutils literal notranslate\">None</code>。</p>\n</dd>\n</dl>\n</dd></dl>\n\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.signals.user_login_failed\">\n<span class=\"sig-name descname\">user_login_failed</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.signals.user_login_failed\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>当用户未能成功登录时发送</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\">sender</code></dt><dd><p>用于认证的模块名称。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">credentials</code></dt><dd><p>一个包含关键字参数的字典，其中包含传递给 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\">authenticate()</code></a> 或你自己的自定义认证后端的用户凭证。匹配一组“敏感的”模式的凭证（包括密码）将不会作为信号的一部分被发送。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">request</code></dt><dd><p><a class=\"reference internal\" href=\"/zh-hans/5.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> 对象，如果有提供给 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\">authenticate()</code></a> 对象的话。</p>\n</dd>\n</dl>\n</dd></dl>\n\n</section>\n<section id=\"module-django.contrib.auth.backends\">\n<span id=\"authentication-backends\"></span><span id=\"authentication-backends-reference\"></span><h2>认证后端<a class=\"heading-anchor\" href=\"#module-django.contrib.auth.backends\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>本节详细介绍了 Django 自带的认证后端。关于如何使用它们以及如何编写你自己的认证后端，请参阅 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/\"><span class=\"doc\">用户认证指南</span></a> 中的 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#authentication-backends\"><span class=\"std std-ref\">其他认证源</span></a> 部分。</p>\n<section id=\"available-authentication-backends\">\n<h3>可用的认证后端<a class=\"heading-anchor\" href=\"#available-authentication-backends\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>在 <a class=\"reference internal\" href=\"#module-django.contrib.auth.backends\" title=\"django.contrib.auth.backends: Django's built-in authentication backend classes.\"><code class=\"xref py py-mod docutils literal notranslate\">django.contrib.auth.backends</code></a> 中可以找到以下后端：</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BaseBackend</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>一个为所有所需方法提供默认实现的基类。默认情况下，它将拒绝任何用户并不提供任何权限。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.get_user_permissions\">\n<span class=\"sig-name descname\">get_user_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.get_user_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.aget_user_permissions\">\n<span class=\"sig-name descname\">aget_user_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.aget_user_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">aget_user_permissions()</code></p>\n<p>返回一个空集。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">aget_user_permissions()</code> function was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.get_group_permissions\">\n<span class=\"sig-name descname\">get_group_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.get_group_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.aget_group_permissions\">\n<span class=\"sig-name descname\">aget_group_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.aget_group_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">aget_group_permissions()</code></p>\n<p>返回一个空集。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">aget_group_permissions()</code> function was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.get_all_permissions\">\n<span class=\"sig-name descname\">get_all_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.get_all_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.aget_all_permissions\">\n<span class=\"sig-name descname\">aget_all_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.aget_all_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">aget_all_permissions()</code></p>\n<p>使用 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.BaseBackend.get_user_permissions\" title=\"django.contrib.auth.backends.BaseBackend.get_user_permissions\"><code class=\"xref py py-meth docutils literal notranslate\">get_user_permissions()</code></a> 和 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.BaseBackend.get_group_permissions\" title=\"django.contrib.auth.backends.BaseBackend.get_group_permissions\"><code class=\"xref py py-meth docutils literal notranslate\">get_group_permissions()</code></a> 来获取 <code class=\"docutils literal notranslate\">user_obj</code> 所拥有的权限字符串。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">aget_all_permissions()</code> function was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.has_perm\">\n<span class=\"sig-name descname\">has_perm</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">perm</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.has_perm\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.BaseBackend.ahas_perm\">\n<span class=\"sig-name descname\">ahas_perm</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">perm</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.BaseBackend.ahas_perm\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">ahas_perm()</code></p>\n<p>使用 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.BaseBackend.get_all_permissions\" title=\"django.contrib.auth.backends.BaseBackend.get_all_permissions\"><code class=\"xref py py-meth docutils literal notranslate\">get_all_permissions()</code></a> 检查 <code class=\"docutils literal notranslate\">user_obj</code> 是否有 <code class=\"docutils literal notranslate\">perm</code> 的权限字符串。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">ahas_perm()</code> function was added.</p>\n</aside>\n</dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ModelBackend</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>这是 Django 默认使用的认证后端。 它使用由用户标识符和密码组成的凭证进行认证。 对于 Django 的默认用户模型来说，用户标识符是用户名，对于自定义用户模型来说，它是 USERNAME_FIELD 指定的字段（参见 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/\"><span class=\"doc\">自定义用户和身份认证</span></a>）。</p>\n<p>它还处理了为 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> 和 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.PermissionsMixin\" title=\"django.contrib.auth.models.PermissionsMixin\"><code class=\"xref py py-class docutils literal notranslate\">PermissionsMixin</code></a> 定义的默认权限模型。</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.has_perm\" title=\"django.contrib.auth.backends.ModelBackend.has_perm\"><code class=\"xref py py-meth docutils literal notranslate\">has_perm()</code></a>、 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.get_all_permissions\" title=\"django.contrib.auth.backends.ModelBackend.get_all_permissions\"><code class=\"xref py py-meth docutils literal notranslate\">get_all_permissions()</code></a>、 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.get_user_permissions\" title=\"django.contrib.auth.backends.ModelBackend.get_user_permissions\"><code class=\"xref py py-meth docutils literal notranslate\">get_user_permissions()</code></a> 和 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.get_group_permissions\" title=\"django.contrib.auth.backends.ModelBackend.get_group_permissions\"><code class=\"xref py py-meth docutils literal notranslate\">get_group_permissions()</code></a> 允许将对象作为参数传递给特定对象的权限，但除了在 <code class=\"docutils literal notranslate\">obj is not None</code> 的情况下返回一个空的权限集外，这个后端并没有实现它们。</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.with_perm\" title=\"django.contrib.auth.backends.ModelBackend.with_perm\"><code class=\"xref py py-meth docutils literal notranslate\">with_perm()</code></a> 也允许传递一个对象作为参数，但与其他方法不同的是，如果 <code class=\"docutils literal notranslate\">obj is not None</code>，则返回一个空的查询集。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.authenticate\">\n<span class=\"sig-name descname\">authenticate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">username<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">password<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.authenticate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.aauthenticate\">\n<span class=\"sig-name descname\">aauthenticate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">username<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">password<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.aauthenticate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>异步版本</em>：<code class=\"docutils literal notranslate\">aauthenticate()</code></p>\n<p>通过调用 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.check_password\" title=\"django.contrib.auth.models.User.check_password\"><code class=\"xref py py-meth docutils literal notranslate\">User.check_password</code></a> 尝试用 <code class=\"docutils literal notranslate\">password</code> 认证 <code class=\"docutils literal notranslate\">username</code>。如果没有提供 <code class=\"docutils literal notranslate\">username</code>，则尝试使用键 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.USERNAME_FIELD\" title=\"django.contrib.auth.models.CustomUser.USERNAME_FIELD\"><code class=\"xref py py-attr docutils literal notranslate\">CustomUser.USERNAME_FIELD</code></a> 从 <code class=\"docutils literal notranslate\">kwargs</code> 中获取一个用户名。返回一个已认证的用户或 <code class=\"docutils literal notranslate\">None</code>。</p>\n<p><code class=\"docutils literal notranslate\">request</code> 是一个 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a>，如果没有提供给 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\">authenticate()</code></a> （将其传递给后端），则可能是 <code class=\"docutils literal notranslate\">None</code>。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">aauthenticate()</code> 函数已添加。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.get_user_permissions\">\n<span class=\"sig-name descname\">get_user_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.get_user_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.aget_user_permissions\">\n<span class=\"sig-name descname\">aget_user_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.aget_user_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">aget_user_permissions()</code></p>\n<p>从他们自己的用户权限中返回 <code class=\"docutils literal notranslate\">user_obj</code> 拥有的权限字符串集。如果 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous\" title=\"django.contrib.auth.models.AbstractBaseUser.is_anonymous\"><code class=\"xref py py-attr docutils literal notranslate\">is_anonymous</code></a> 或 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a> 是 <code class=\"docutils literal notranslate\">False</code>，则返回空集。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">aget_user_permissions()</code> function was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.get_group_permissions\">\n<span class=\"sig-name descname\">get_group_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.get_group_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.aget_group_permissions\">\n<span class=\"sig-name descname\">aget_group_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.aget_group_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">aget_group_permissions()</code></p>\n<p>从他们自己的用户权限中返回 <code class=\"docutils literal notranslate\">user_obj</code> 拥有的权限字符串集。如果 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous\" title=\"django.contrib.auth.models.AbstractBaseUser.is_anonymous\"><code class=\"xref py py-attr docutils literal notranslate\">is_anonymous</code></a> 或 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a> 是 <code class=\"docutils literal notranslate\">False</code>，则返回空集。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">aget_group_permissions()</code> function was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.get_all_permissions\">\n<span class=\"sig-name descname\">get_all_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.get_all_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.aget_all_permissions\">\n<span class=\"sig-name descname\">aget_all_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.aget_all_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">aget_all_permissions()</code></p>\n<p>从他们自己的用户权限中返回 <code class=\"docutils literal notranslate\">user_obj</code> 拥有的权限字符串集。如果 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous\" title=\"django.contrib.auth.models.AbstractBaseUser.is_anonymous\"><code class=\"xref py py-attr docutils literal notranslate\">is_anonymous</code></a> 或 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a> 是 <code class=\"docutils literal notranslate\">False</code>，则返回空集。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">aget_all_permissions()</code> function was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.has_perm\">\n<span class=\"sig-name descname\">has_perm</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">perm</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.has_perm\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.ahas_perm\">\n<span class=\"sig-name descname\">ahas_perm</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">perm</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.ahas_perm\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">ahas_perm()</code></p>\n<p>使用 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.get_all_permissions\" title=\"django.contrib.auth.backends.ModelBackend.get_all_permissions\"><code class=\"xref py py-meth docutils literal notranslate\">get_all_permissions()</code></a> 检查 <code class=\"docutils literal notranslate\">user_obj</code> 是否有 <code class=\"docutils literal notranslate\">perm</code> 的权限。如果用户没有 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a>，则返回 <code class=\"docutils literal notranslate\">False</code>。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">ahas_perm()</code> function was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.has_module_perms\">\n<span class=\"sig-name descname\">has_module_perms</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">app_label</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.has_module_perms\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.ahas_module_perms\">\n<span class=\"sig-name descname\">ahas_module_perms</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">app_label</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.ahas_module_perms\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">ahas_module_perms()</code></p>\n<p>返回 <code class=\"docutils literal notranslate\">user_obj</code> 是否对应用 <code class=\"docutils literal notranslate\">app_label</code> 具有任何权限。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">ahas_module_perms()</code> function was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.user_can_authenticate\">\n<span class=\"sig-name descname\">user_can_authenticate</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.user_can_authenticate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回是否允许用户进行认证。为了与 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\">AuthenticationForm</code></a> 中 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed\" title=\"django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed\"><code class=\"xref py py-meth docutils literal notranslate\">prohibits inactive users from logging in</code></a> 的行为相匹配，对于有 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active=False</code></a> 的用户，本方法返回 <code class=\"docutils literal notranslate\">False</code>。允许没有 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a> 字段的自定义用户模型。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.with_perm\">\n<span class=\"sig-name descname\">with_perm</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">perm</em>, <em class=\"sig-param\">is_active<span class=\"o\">=</span><span class=\"default_value\">True</span></em>, <em class=\"sig-param\">include_superusers<span class=\"o\">=</span><span class=\"default_value\">True</span></em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.with_perm\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回所有拥有 <code class=\"docutils literal notranslate\">perm</code> 权限的活跃用户，可以是 <code class=\"docutils literal notranslate\">&quot;&lt;app label&gt;.&lt;permission codename&gt;&quot;</code> 的形式，也可以是 <a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\">Permission</code></a> 实例。如果没有找到拥有 <code class=\"docutils literal notranslate\">perm</code> 权限的用户，则返回一个空的查询集。</p>\n<p>如果 <code class=\"docutils literal notranslate\">is_active</code> 为 <code class=\"docutils literal notranslate\">True</code> （默认），则只返回活跃用户，如果 <code class=\"docutils literal notranslate\">False</code>，则只返回非活跃用户。使用 <code class=\"docutils literal notranslate\">None</code> 返回所有用户，无论其是否处于活跃状态。</p>\n<p>如果 <code class=\"docutils literal notranslate\">include_superusers</code> 为 <code class=\"docutils literal notranslate\">True</code> （默认），结果将包括超级用户。</p>\n</dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.AllowAllUsersModelBackend\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">AllowAllUsersModelBackend</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.AllowAllUsersModelBackend\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>与 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend\" title=\"django.contrib.auth.backends.ModelBackend\"><code class=\"xref py py-class docutils literal notranslate\">ModelBackend</code></a> 一样，只是它不会拒绝非活动用户，因为 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.user_can_authenticate\" title=\"django.contrib.auth.backends.ModelBackend.user_can_authenticate\"><code class=\"xref py py-meth docutils literal notranslate\">user_can_authenticate()</code></a> 总是返回 <code class=\"docutils literal notranslate\">True</code>。</p>\n<p>当使用这个后台时，你可能会想要自定义 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\">AuthenticationForm</code></a> 所使用的 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#django.contrib.auth.views.LoginView\" title=\"django.contrib.auth.views.LoginView\"><code class=\"xref py py-class docutils literal notranslate\">LoginView</code></a>，通过覆盖 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed\" title=\"django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed\"><code class=\"xref py py-meth docutils literal notranslate\">confirm_login_allowed()</code></a> 方法，因为它拒绝非活动用户。</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">RemoteUserBackend</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>使用这个后端来利用外部对 Django 处理的认证。 它使用 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/request-response/#django.http.HttpRequest.META\" title=\"django.http.HttpRequest.META\"><code class=\"xref py py-attr docutils literal notranslate\">request.META['REMOTE_USER']</code></a> 中传递的用户名进行认证。 参见 <a class=\"reference internal\" href=\"/zh-hans/5.2/howto/auth-remote-user/\"><span class=\"doc\">认证 REMOTE_USER</span></a> 文档。</p>\n<p>如果你需要更多的控制，你可以创建自己的认证后端，继承这个类，并覆盖这些属性或方法：</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\">\n<span class=\"sig-name descname\">create_unknown_user</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">True</code> 或 <code class=\"docutils literal notranslate\">False</code>。确定如果数据库中没有用户对象，是否创建用户对象。默认为 <code class=\"docutils literal notranslate\">True</code>。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.authenticate\">\n<span class=\"sig-name descname\">authenticate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">remote_user</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.authenticate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.aauthenticate\">\n<span class=\"sig-name descname\">aauthenticate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">remote_user</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.aauthenticate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>异步版本</em>：<code class=\"docutils literal notranslate\">aauthenticate()</code></p>\n<p>作为 <code class=\"docutils literal notranslate\">remote_user</code> 传递的用户名被认为是可信的。如果 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\" title=\"django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\"><code class=\"xref py py-attr docutils literal notranslate\">create_unknown_user</code></a> 为 <code class=\"docutils literal notranslate\">True</code>，则该方法返回给定用户名的用户对象，创建一个新的用户对象。</p>\n<p>如果 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\" title=\"django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\"><code class=\"xref py py-attr docutils literal notranslate\">create_unknown_user</code></a> 为 <code class=\"docutils literal notranslate\">False</code>，且数据库中没有找到给定用户名的 <code class=\"docutils literal notranslate\">User</code> 对象，则返回 <code class=\"docutils literal notranslate\">None</code>。</p>\n<p><code class=\"docutils literal notranslate\">request</code> 是一个 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a>，如果没有提供给 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\">authenticate()</code></a> （将其传递给后端），则可能是 <code class=\"docutils literal notranslate\">None</code>。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">aauthenticate()</code> 函数已添加。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.clean_username\">\n<span class=\"sig-name descname\">clean_username</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">username</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.clean_username\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>在使用 <code class=\"docutils literal notranslate\">username</code> 获取或创建用户对象之前，对 <code class=\"docutils literal notranslate\">username</code> 进行任何清理（例如剥离 LDAP DN 信息）。返回清理后的用户名。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.configure_user\">\n<span class=\"sig-name descname\">configure_user</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">user</em>, <em class=\"sig-param\">created<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.configure_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.aconfigure_user\">\n<span class=\"sig-name descname\">aconfigure_user</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">user</em>, <em class=\"sig-param\">created<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.aconfigure_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynchronous version</em>: <code class=\"docutils literal notranslate\">aconfigure_user()</code></p>\n<p>Configures the user on each authentication attempt. This method is\ncalled immediately after fetching or creating the user being\nauthenticated, and can be used to perform custom setup actions, such as\nsetting the user's groups based on attributes in an LDAP directory.\nReturns the user object. When fetching or creating an user is called\nfrom a synchronous context, <code class=\"docutils literal notranslate\">configure_user</code> is called,\n<code class=\"docutils literal notranslate\">aconfigure_user</code> is called from async contexts.</p>\n<p>可以在用户创建时执行设置（<code class=\"docutils literal notranslate\">created</code> 为 <code class=\"docutils literal notranslate\">True</code>）或在现有用户上执行设置（<code class=\"docutils literal notranslate\">created</code> 为 <code class=\"docutils literal notranslate\">False</code>），以在远程和本地系统之间同步属性。</p>\n<p><code class=\"docutils literal notranslate\">request</code> 是一个 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a>，如果没有提供给 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\">authenticate()</code></a> （将其传递给后端），则可能是 <code class=\"docutils literal notranslate\">None</code>。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">aconfigure_user()</code> function was added.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.user_can_authenticate\">\n<span class=\"sig-name descname\">user_can_authenticate</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.user_can_authenticate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>返回是否允许用户进行身份认证。对于有 <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active=False</code></a> 的用户，本方法返回 <code class=\"docutils literal notranslate\">False</code>。允许没有 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a> 字段的自定义用户模型。</p>\n</dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.AllowAllUsersRemoteUserBackend\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">AllowAllUsersRemoteUserBackend</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.AllowAllUsersRemoteUserBackend\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>与 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend\" title=\"django.contrib.auth.backends.RemoteUserBackend\"><code class=\"xref py py-class docutils literal notranslate\">RemoteUserBackend</code></a> 相同，只是它不会拒绝非活动用户，因为 <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend.user_can_authenticate\" title=\"django.contrib.auth.backends.RemoteUserBackend.user_can_authenticate\"><code class=\"xref py py-attr docutils literal notranslate\">user_can_authenticate</code></a> 总是返回 <code class=\"docutils literal notranslate\">True</code>。</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"utility-functions\">\n<h2>实用工具函数<a class=\"heading-anchor\" href=\"#utility-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.get_user\">\n<span class=\"sig-name descname\">get_user</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.get_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.aget_user\">\n<span class=\"sig-name descname\">aget_user</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.aget_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>异步版本</em>：<code class=\"docutils literal notranslate\">aget_user()</code></p>\n<p>返回与给定 <code class=\"docutils literal notranslate\">request</code> 的会话相关联的用户模型实例。</p>\n<p>它会检查会话中存储的身份验证后端是否存在于 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\">AUTHENTICATION_BACKENDS</code></a> 中。如果存在，它将使用后端的 <code class=\"docutils literal notranslate\">get_user()</code> 方法来检索用户模型实例，然后通过调用用户模型的 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.get_session_auth_hash\" title=\"django.contrib.auth.models.AbstractBaseUser.get_session_auth_hash\"><code class=\"xref py py-meth docutils literal notranslate\">get_session_auth_hash()</code></a> 方法来验证会话。如果验证失败并且提供了 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/settings/#std-setting-SECRET_KEY_FALLBACKS\"><code class=\"xref std std-setting docutils literal notranslate\">SECRET_KEY_FALLBACKS</code></a>，它将使用 <a class=\"reference internal\" href=\"/zh-hans/5.2/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.get_session_auth_fallback_hash\" title=\"django.contrib.auth.models.AbstractBaseUser.get_session_auth_fallback_hash\"><code class=\"xref py py-meth docutils literal notranslate\">get_session_auth_fallback_hash()</code></a> 来对会话进行每个后备密钥的验证。</p>\n<p>如果存储在会话中的认证后端不再在 <a class=\"reference internal\" href=\"/zh-hans/5.2/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\">AUTHENTICATION_BACKENDS</code></a> 中，如果后端的 <code class=\"docutils literal notranslate\">get_user()</code> 方法没有返回用户，或者会话认证的哈希没有认证，则返回一个 <a class=\"reference internal\" href=\"#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\">AnonymousUser</code></a> 的实例。</p>\n</dd></dl>\n\n</section>","rootId":"django-contrib-auth","toc":[{"title":"User 模型","anchor":"user-model","children":[{"title":"字段","anchor":"fields","children":[]},{"title":"属性","anchor":"attributes","children":[]},{"title":"方法","anchor":"methods","children":[]},{"title":"管理器方法","anchor":"manager-methods","children":[]}]},{"title":"AnonymousUser 对象","anchor":"anonymoususer-object","children":[]},{"title":"Permission 模型","anchor":"permission-model","children":[{"title":"字段","anchor":"id1","children":[]},{"title":"方法","anchor":"id2","children":[]}]},{"title":"Group 模型","anchor":"group-model","children":[{"title":"字段","anchor":"id3","children":[]}]},{"title":"验证器","anchor":"validators","children":[]},{"title":"登录和注销的信号","anchor":"module-django.contrib.auth.signals","children":[]},{"title":"认证后端","anchor":"module-django.contrib.auth.backends","children":[{"title":"可用的认证后端","anchor":"available-authentication-backends","children":[]}]},{"title":"实用工具函数","anchor":"utility-functions","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API 参考","url":"/zh-hans/5.2/ref/"},{"docname":"ref/contrib/index","title":"contrib 包","url":"/zh-hans/5.2/ref/contrib/"}],"prev":{"docname":"ref/contrib/admin/javascript","title":"管理的 JavaScript 自定义","url":"/zh-hans/5.2/ref/contrib/admin/javascript/"},"next":{"docname":"ref/contrib/contenttypes","title":"内容类型框架","url":"/zh-hans/5.2/ref/contrib/contenttypes/"},"formats":{"html":"/zh-hans/5.2/ref/contrib/auth/","markdown":"/zh-hans/5.2/ref/contrib/auth.md","json":"/zh-hans/5.2/ref/contrib/auth.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/ref/contrib/auth.txt","official":"https://docs.djangoproject.com/zh-hans/5.2/ref/contrib/auth/","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","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}