{"title":"django.contrib.auth","version":"3.1","locale":"zh-hans","docname":"ref/contrib/auth","url":"/zh-hans/3.1/ref/contrib/auth/","canonical":"https://djangodocs.dev/zh-hans/3.1/ref/contrib/auth/","summary":"该文档提供了 Django 认证系统组件的 API 。有关更多这些组件的用例，或需要自定义认证与鉴权，请参阅 认证主题指南 。 User 模型 Link to this heading # class models. User Link to this definition # 字段 Link to this heading…","html":"<h1><code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.auth</span></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/3.1/topics/auth/\"><span class=\"doc\">认证主题指南</span></a>。</p>\n<section id=\"user-model\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">User</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">User</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">User</span></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\"><span class=\"pre\">User</span></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\"><span class=\"pre\">username</span></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\"><span class=\"pre\">_</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">&#64;</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">+</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">.</span></code> 和 <code class=\"docutils literal notranslate\"><span class=\"pre\">-</span></code> 字符。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> 对许多使用情况来说应该是足够的。如果你需要更长的长度，请使用 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/customizing/#specifying-custom-user-model\"><span class=\"std std-ref\">自定义用户模型</span></a>。如果你使用的 MySQL 是 <code class=\"docutils literal notranslate\"><span class=\"pre\">utf8mb4</span></code> 编码（推荐用于适当的 Unicode 支持），最多指定 <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length=191</span></code>，因为在这种情况下，MySQL 默认只能创建 191 个字符的唯一索引。</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\"><span class=\"pre\">first_name</span></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/3.1/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">blank=True</span></code></a>）。150 个字符或更少。</p>\n<aside class=\"version-note version-changed\" data-version=\"3.1\">\n<p class=\"version-note-title\">Changed in Django 3.1</p><p><code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> 从 30 个字符增加到 150 个字符。</p>\n</aside>\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\"><span class=\"pre\">last_name</span></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/3.1/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">blank=True</span></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\"><span class=\"pre\">email</span></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/3.1/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">blank=True</span></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\"><span class=\"pre\">password</span></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/3.1/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\"><span class=\"pre\">groups</span></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\"><span class=\"pre\">Group</span></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\"><span class=\"pre\">user_permissions</span></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\"><span class=\"pre\">Permission</span></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\"><span class=\"pre\">is_staff</span></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\"><span class=\"pre\">is_active</span></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\"><span class=\"pre\">False</span></code>，而不是删除账户；这样，如果你的应用程序对用户有任何外键，外键就不会被破坏。</p>\n<p>这不一定能控制用户是否能登录。认证后端不一定需要检查 <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></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\"><span class=\"pre\">ModelBackend</span></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\"><span class=\"pre\">RemoteUserBackend</span></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\"><span class=\"pre\">AllowAllUsersModelBackend</span></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\"><span class=\"pre\">AllowAllUsersRemoteUserBackend</span></code></a>。在这种情况下，你还需要自定义 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AuthenticationForm</span></code></a> 所使用的 <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LoginView</span></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\"><span class=\"pre\">has_perm()</span></code></a> 等权限检查方法，以及 Django 管理中的认证方法，都会对非活跃用户返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></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\"><span class=\"pre\">is_superuser</span></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\"><span class=\"pre\">last_login</span></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\"><span class=\"pre\">date_joined</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">User</span></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\"><span class=\"pre\">is_authenticated</span></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\"><span class=\"pre\">True</span></code> （匿名用户 <code class=\"docutils literal notranslate\"><span class=\"pre\">AnonymousUser.is_authenticated</span></code>  始终返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> ）。这是一种判断用户是否已通过身份认证的方法。这并不意味着任何权限，也不会检查用户是否处于活动状态或是否具有有效会话。即使通常你会根据 <code class=\"docutils literal notranslate\"><span class=\"pre\">request.user</span></code> 检查这个属性，以确定它是否被 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware\" title=\"django.contrib.auth.middleware.AuthenticationMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AuthenticationMiddleware</span></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\"><span class=\"pre\">User</span></code></a> 实例都返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></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\"><span class=\"pre\">is_anonymous</span></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\"><span class=\"pre\">False</span></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\"><span class=\"pre\">User</span></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\"><span class=\"pre\">AnonymousUser</span></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\"><span class=\"pre\">is_authenticated</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">User</span></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\"><span class=\"pre\">get_username</span></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\"><span class=\"pre\">User</span></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\"><span class=\"pre\">get_full_name</span></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\"><span class=\"pre\">first_name</span></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\"><span class=\"pre\">last_name</span></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\"><span class=\"pre\">get_short_name</span></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\"><span class=\"pre\">first_name</span></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\"><span class=\"pre\">set_password</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">raw_password</span></span></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\"><span class=\"pre\">User</span></code></a> 对象。</p>\n<p>当 <code class=\"docutils literal notranslate\"><span class=\"pre\">raw_password</span></code> 为 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></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\"><span class=\"pre\">set_unusable_password()</span></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\"><span class=\"pre\">check_password</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">raw_password</span></span></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><p>如果给定的原始字符串是用户的正确密码，返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></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\"><span class=\"pre\">set_unusable_password</span></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.check_password\" title=\"django.contrib.auth.models.User.check_password\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">check_password()</span></code></a> 对这个用户的检查永远不会返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></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\"><span class=\"pre\">User</span></code></a> 对象。</p>\n<p>如果针对现有外部源（例如 LDAP 目录）进行应用程序的身份认证，则可能需要这个功能。</p>\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\"><span class=\"pre\">has_usable_password</span></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\"><span class=\"pre\">set_unusable_password()</span></code> 被调用，返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></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\"><span class=\"pre\">get_user_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><aside class=\"version-note version-added\" data-version=\"3.0\">\n<p class=\"version-note-title\">New in Django 3.0</p></aside>\n<p>返回用户直接拥有的一组权限字符串。</p>\n<p>如果传入了 <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></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_group_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_group_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><p>返回用户通过他们的组拥有的一组权限字符串。</p>\n<p>如果传入了 <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></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_all_permissions\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_all_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><p>返回用户拥有的一组权限字符串，包括通过组和用户的权限。</p>\n<p>如果传入了 <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code>，则只返回这个特定对象的权限。</p>\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\"><span class=\"pre\">has_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><p>如果用户拥有指定的权限，返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>，其中 perm 的格式是 <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;&lt;app</span> <span class=\"pre\">label&gt;.&lt;permission</span> <span class=\"pre\">codename&gt;&quot;</span></code>。（参见 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/default/#topic-authorization\"><span class=\"std std-ref\">权限</span></a> 的文档）。如果用户是不活跃的，这个方法将总是返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>。对于活跃的超级用户，本方法将始终返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>。</p>\n<p>如果传入了 <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code>，这个方法不会检查模型的权限，而是检查这个特定对象的权限。</p>\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\"><span class=\"pre\">has_perms</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm_list</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><p>如果用户拥有指定的每个权限，返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>，其中每个 perm 的格式为 <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;&lt;app</span> <span class=\"pre\">label&gt;.&lt;permission</span> <span class=\"pre\">codename&gt;&quot;</span></code>。如果用户不活跃，本方法将总是返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>。对于活跃的超级用户，本方法将始终返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>。</p>\n<p>如果传入了 <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code>，这个方法不会检查模型的权限，而是检查这个特定对象的权限。</p>\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\"><span class=\"pre\">has_module_perms</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">package_name</span></span></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><p>如果用户在给定的包（Django 应用标签）中有任何权限，则返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>。如果用户不活跃，本方法将总是返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>。如果是活跃的超级用户，本方法将始终返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>。</p>\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\"><span class=\"pre\">email_user</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">subject</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">from_email</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></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>向用户发送邮件。如果 <code class=\"docutils literal notranslate\"><span class=\"pre\">from_email</span></code> 是 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>，Django 使用 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/settings/#std-setting-DEFAULT_FROM_EMAIL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_FROM_EMAIL</span></code></a>。任何 <code class=\"docutils literal notranslate\"><span class=\"pre\">**kwargs</span></code> 都会传递给底层的 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/email/#django.core.mail.send_mail\" title=\"django.core.mail.send_mail\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">send_mail()</span></code></a> 调用。</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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">UserManager</span></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\"><span class=\"pre\">User</span></code> 模型有一个自定义管理器，它有以下辅助方法（除了 <code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BaseUserManager</span></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\"><span class=\"pre\">create_user</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">username</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">email</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">password</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra_fields</span></span></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><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\"><span class=\"pre\">User</span></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\"><span class=\"pre\">username</span></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\"><span class=\"pre\">password</span></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\"><span class=\"pre\">email</span></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\"><span class=\"pre\">User</span></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\"><span class=\"pre\">is_active</span></code></a> 设置为 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></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\"><span class=\"pre\">set_unusable_password()</span></code></a> 将被调用。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">extra_fields</span></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\"><span class=\"pre\">User</span></code></a> 的 <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__</span></code> 方法中，允许在 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/customizing/#auth-custom-user\"><span class=\"std std-ref\">自定义用户模型</span></a> 上设置任意字段。</p>\n<p>使用方法参见 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/default/#topics-auth-creating-users\"><span class=\"std std-ref\">创建用户</span></a>。</p>\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\"><span class=\"pre\">create_superuser</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">username</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">email</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">password</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra_fields</span></span></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><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\"><span class=\"pre\">create_user()</span></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\"><span class=\"pre\">is_staff</span></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\"><span class=\"pre\">is_superuser</span></code></a> 设置为 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>。</p>\n<aside class=\"version-note version-changed\" data-version=\"3.0\">\n<p class=\"version-note-title\">Changed in Django 3.0</p><p><code class=\"docutils literal notranslate\"><span class=\"pre\">email</span></code> 和 <code class=\"docutils literal notranslate\"><span class=\"pre\">password</span></code> 参数是可选的。</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\"><span class=\"pre\">with_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">is_active</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">include_superusers</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">backend</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><aside class=\"version-note version-added\" data-version=\"3.0\">\n<p class=\"version-note-title\">New in Django 3.0</p></aside>\n<p>返回拥有给定权限 <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></code> 的用户，可以是 <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;&lt;app</span> <span class=\"pre\">label&gt;.&lt;permission</span> <span class=\"pre\">codename&gt;&quot;</span></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\"><span class=\"pre\">Permission</span></code></a> 实例。如果没有找到拥有 <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></code> 的用户，返回一个空的查询集。</p>\n<p>如果 <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code> 为 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> （默认），则只返回活跃用户，如果 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>，则只返回非活跃用户。使用 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> 返回所有用户，无论其是否处于活跃状态。</p>\n<p>如果 <code class=\"docutils literal notranslate\"><span class=\"pre\">include_superusers</span></code> 为 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> （默认），结果将包括超级用户。</p>\n<p>如果传入了 <code class=\"docutils literal notranslate\"><span class=\"pre\">backend</span></code>，并且在 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">AUTHENTICATION_BACKENDS</span></code></a> 中定义了，那么本方法将使用它。否则，它将使用 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">AUTHENTICATION_BACKENDS</span></code></a> 中的 <code class=\"docutils literal notranslate\"><span class=\"pre\">backend</span></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\"><span class=\"pre\">AnonymousUser</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">AnonymousUser</span></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\"><span class=\"pre\">django.contrib.auth.models.AnonymousUser</span></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\"><span class=\"pre\">django.contrib.auth.models.User</span></code></a> 接口的类，有这些区别：</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/zh-hans/3.1/topics/db/models/#automatic-primary-key-fields\"><span class=\"std std-ref\">id</span></a> 总是 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></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\"><span class=\"pre\">username</span></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\"><span class=\"pre\">get_username()</span></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\"><span class=\"pre\">is_anonymous</span></code></a> 是 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> 而不是 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></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\"><span class=\"pre\">is_authenticated</span></code></a> 是 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> 而不是 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></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\"><span class=\"pre\">is_staff</span></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\"><span class=\"pre\">is_superuser</span></code></a> 总是 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></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\"><span class=\"pre\">is_active</span></code></a> 总是 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>。</p></li>\n<li><p><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">group</span></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\"><span class=\"pre\">user_permissions</span></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\"><span class=\"pre\">set_password()</span></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\"><span class=\"pre\">check_password()</span></code></a>、<a class=\"reference internal\" href=\"/zh-hans/3.1/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">save()</span></code></a> 和 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/models/instances/#django.db.models.Model.delete\" title=\"django.db.models.Model.delete\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">delete()</span></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\"><span class=\"pre\">NotImplementedError</span></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\"><span class=\"pre\">AnonymousUser</span></code></a> 对象，但它们会被 Web 请求使用，下一节会解释。</p>\n</section>\n<section id=\"permission-model\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">Permission</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">Permission</span></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\"><span class=\"pre\">Permission</span></code></a> 对象有以下字段：</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">Permission</span></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\"><span class=\"pre\">name</span></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\"><span class=\"pre\">'Can</span> <span class=\"pre\">vote'</span></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\"><span class=\"pre\">content_type</span></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>必要的。对 <code class=\"docutils literal notranslate\"><span class=\"pre\">django_content_type</span></code> 数据库表的引用，该表包含每个已安装模型的记录。</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\"><span class=\"pre\">codename</span></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\"><span class=\"pre\">'can_vote'</span></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\"><span class=\"pre\">Permission</span></code></a> 对象和其他 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">Group</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">Group</span></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\"><span class=\"pre\">Group</span></code></a> 对象有以下字段：</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">Group</span></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\"><span class=\"pre\">name</span></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\"><span class=\"pre\">'Awesome</span> <span class=\"pre\">Users'</span></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\"><span class=\"pre\">permissions</span></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\"><span class=\"pre\">Permission</span></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><span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">permissions</span><span class=\"o\">.</span><span class=\"n\">set</span><span class=\"p\">([</span><span class=\"n\">permission_list</span><span class=\"p\">])</span>\n<span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">permissions</span><span class=\"o\">.</span><span class=\"n\">add</span><span class=\"p\">(</span><span class=\"n\">permission</span><span class=\"p\">,</span> <span class=\"n\">permission</span><span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">)</span>\n<span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">permissions</span><span class=\"o\">.</span><span class=\"n\">remove</span><span class=\"p\">(</span><span class=\"n\">permission</span><span class=\"p\">,</span> <span class=\"n\">permission</span><span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">)</span>\n<span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">permissions</span><span class=\"o\">.</span><span class=\"n\">clear</span><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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">validators.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ASCIIUsernameValidator</span></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\"><span class=\"pre\">&#64;</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">.</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">+</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">-</span></code> 和 <code class=\"docutils literal notranslate\"><span class=\"pre\">_</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">validators.</span></span><span class=\"sig-name descname\"><span class=\"pre\">UnicodeUsernameValidator</span></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\"><span class=\"pre\">&#64;</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">.</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">+</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">-</span></code> 和 <code class=\"docutils literal notranslate\"><span class=\"pre\">_</span></code> 之外，还允许使用 Unicode 字符的字段验证器。<code class=\"docutils literal notranslate\"><span class=\"pre\">User.username</span></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/3.1/topics/signals/\"><span class=\"doc\">信号</span></a>，可以在用户登录或退出时用于通知。</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.signals.user_logged_in\">\n<span class=\"sig-name descname\"><span class=\"pre\">user_logged_in</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</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\"><span class=\"pre\">sender</span></code></dt><dd><p>刚刚登录的用户的类。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code></dt><dd><p>当前的 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> 实例。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">user</span></code></dt><dd><p>刚刚登录的用户的实例。</p>\n</dd>\n</dl>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.signals.user_logged_out\">\n<span class=\"sig-name descname\"><span class=\"pre\">user_logged_out</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</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\"><span class=\"pre\">sender</span></code></dt><dd><p>如上所述：刚刚注销的用户的类，如果用户没有经过认证，则为 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code></dt><dd><p>当前的 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> 实例。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">user</span></code></dt><dd><p>刚刚注销的用户实例，如果用户没有经过认证，则为 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>。</p>\n</dd>\n</dl>\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.signals.user_login_failed\">\n<span class=\"sig-name descname\"><span class=\"pre\">user_login_failed</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</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\"><span class=\"pre\">sender</span></code></dt><dd><p>用于认证的模块名称。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">credentials</span></code></dt><dd><p>一个包含关键字参数的字典，其中包含传递给 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">authenticate()</span></code></a> 或你自己的自定义认证后端的用户凭证。匹配一组“敏感的”模式的凭证（包括密码）将不会作为信号的一部分被发送。</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code></dt><dd><p><a class=\"reference internal\" href=\"/zh-hans/3.1/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> 对象，如果有提供给 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">authenticate()</span></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/3.1/topics/auth/\"><span class=\"doc\">用户认证指南</span></a> 中的 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">django.contrib.auth.backends</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">BaseBackend</span></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><aside class=\"version-note version-added\" data-version=\"3.0\">\n<p class=\"version-note-title\">New in Django 3.0</p></aside>\n<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\"><span class=\"pre\">get_user_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><p>返回一个空集。</p>\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\"><span class=\"pre\">get_group_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><p>返回一个空集。</p>\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\"><span class=\"pre\">get_all_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><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\"><span class=\"pre\">get_user_permissions()</span></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\"><span class=\"pre\">get_group_permissions()</span></code></a> 来获取 <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> 所拥有的权限字符串。</p>\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\"><span class=\"pre\">has_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><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\"><span class=\"pre\">get_all_permissions()</span></code></a> 检查 <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> 是否有 <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></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.ModelBackend\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ModelBackend</span></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/3.1/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\"><span class=\"pre\">User</span></code></a> 和 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/customizing/#django.contrib.auth.models.PermissionsMixin\" title=\"django.contrib.auth.models.PermissionsMixin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">PermissionsMixin</span></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\"><span class=\"pre\">has_perm()</span></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\"><span class=\"pre\">get_all_permissions()</span></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\"><span class=\"pre\">get_user_permissions()</span></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\"><span class=\"pre\">get_group_permissions()</span></code></a> 允许将对象作为参数传递给特定对象的权限，但除了在 <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span> <span class=\"pre\">is</span> <span class=\"pre\">not</span> <span class=\"pre\">None</span></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\"><span class=\"pre\">with_perm()</span></code></a> 也允许传递一个对象作为参数，但与其他方法不同的是，如果 <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span> <span class=\"pre\">is</span> <span class=\"pre\">not</span> <span class=\"pre\">None</span></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\"><span class=\"pre\">authenticate</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">username</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">password</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></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><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\"><span class=\"pre\">User.check_password</span></code></a> 尝试用 <code class=\"docutils literal notranslate\"><span class=\"pre\">password</span></code> 认证 <code class=\"docutils literal notranslate\"><span class=\"pre\">username</span></code>。如果没有提供 <code class=\"docutils literal notranslate\"><span class=\"pre\">username</span></code>，则尝试使用键 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">CustomUser.USERNAME_FIELD</span></code></a> 从 <code class=\"docutils literal notranslate\"><span class=\"pre\">kwargs</span></code> 中获取一个用户名。返回一个已认证的用户或 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> 是一个 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a>，如果没有提供给 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">authenticate()</span></code></a> （将其传递给后端），则可能是 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>。</p>\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\"><span class=\"pre\">get_user_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><p>从他们自己的用户权限中返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> 拥有的权限字符串集。如果 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">is_anonymous</span></code></a> 或 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">is_active</span></code></a> 是 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>，则返回空集。</p>\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\"><span class=\"pre\">get_group_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><p>从他们自己的用户权限中返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> 拥有的权限字符串集。如果 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">is_anonymous</span></code></a> 或 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">is_active</span></code></a> 是 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>，则返回空集。</p>\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\"><span class=\"pre\">get_all_permissions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><p>从他们自己的用户权限中返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> 拥有的权限字符串集。如果 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">is_anonymous</span></code></a> 或 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">is_active</span></code></a> 是 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>，则返回空集。</p>\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\"><span class=\"pre\">has_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><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\"><span class=\"pre\">get_all_permissions()</span></code></a> 检查 <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> 是否有 <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></code> 的权限。如果用户没有 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">is_active</span></code></a>，则返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>。</p>\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\"><span class=\"pre\">has_module_perms</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user_obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">app_label</span></span></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><p>返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">user_obj</span></code> 是否对应用 <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label</span></code> 具有任何权限。</p>\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\"><span class=\"pre\">user_can_authenticate</span></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/3.1/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AuthenticationForm</span></code></a> 中 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">prohibits</span> <span class=\"pre\">inactive</span> <span class=\"pre\">users</span> <span class=\"pre\">from</span> <span class=\"pre\">logging</span> <span class=\"pre\">in</span></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\"><span class=\"pre\">is_active=False</span></code></a> 的用户，本方法返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>。允许没有 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">is_active</span></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\"><span class=\"pre\">with_perm</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">perm</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">is_active</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">include_superusers</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></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><aside class=\"version-note version-added\" data-version=\"3.0\">\n<p class=\"version-note-title\">New in Django 3.0</p></aside>\n<p>返回所有拥有 <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></code> 权限的活跃用户，可以是 <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;&lt;app</span> <span class=\"pre\">label&gt;.&lt;permission</span> <span class=\"pre\">codename&gt;&quot;</span></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\"><span class=\"pre\">Permission</span></code></a> 实例。如果没有找到拥有 <code class=\"docutils literal notranslate\"><span class=\"pre\">perm</span></code> 权限的用户，则返回一个空的查询集。</p>\n<p>如果 <code class=\"docutils literal notranslate\"><span class=\"pre\">is_active</span></code> 为 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> （默认），则只返回活跃用户，如果 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>，则只返回非活跃用户。使用 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> 返回所有用户，无论其是否处于活跃状态。</p>\n<p>如果 <code class=\"docutils literal notranslate\"><span class=\"pre\">include_superusers</span></code> 为 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">AllowAllUsersModelBackend</span></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\"><span class=\"pre\">ModelBackend</span></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\"><span class=\"pre\">user_can_authenticate()</span></code></a> 总是返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>。</p>\n<p>当使用这个后台时，你可能会想要自定义 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AuthenticationForm</span></code></a> 所使用的 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/default/#django.contrib.auth.views.LoginView\" title=\"django.contrib.auth.views.LoginView\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LoginView</span></code></a>，通过覆盖 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">confirm_login_allowed()</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">RemoteUserBackend</span></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/3.1/ref/request-response/#django.http.HttpRequest.META\" title=\"django.http.HttpRequest.META\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">request.META['REMOTE_USER']</span></code></a> 中传递的用户名进行认证。 参见 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">create_unknown_user</span></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\"><span class=\"pre\">True</span></code> 或 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>。确定如果数据库中没有用户对象，是否创建用户对象。默认为 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></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\"><span class=\"pre\">authenticate</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">remote_user</span></span></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><p>作为 <code class=\"docutils literal notranslate\"><span class=\"pre\">remote_user</span></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\"><span class=\"pre\">create_unknown_user</span></code></a> 为 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></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\"><span class=\"pre\">create_unknown_user</span></code></a> 为 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>，且数据库中没有找到给定用户名的 <code class=\"docutils literal notranslate\"><span class=\"pre\">User</span></code> 对象，则返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> 是一个 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a>，如果没有提供给 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">authenticate()</span></code></a> （将其传递给后端），则可能是 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>。</p>\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\"><span class=\"pre\">clean_username</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">username</span></span></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\"><span class=\"pre\">username</span></code> 获取或创建用户对象之前，对 <code class=\"docutils literal notranslate\"><span class=\"pre\">username</span></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\"><span class=\"pre\">configure_user</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">user</span></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><p>配置一个新创建的用户。 这个方法在新用户创建后立即被调用，可以用来执行自定义设置操作，例如根据 LDAP 目录中的属性设置用户的组。返回用户对象。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> 是一个 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a>，如果没有提供给 <a class=\"reference internal\" href=\"/zh-hans/3.1/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">authenticate()</span></code></a> （将其传递给后端），则可能是 <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>。</p>\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\"><span class=\"pre\">user_can_authenticate</span></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\"><span class=\"pre\">is_active=False</span></code></a> 的用户，本方法返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>。允许没有 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">is_active</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">AllowAllUsersRemoteUserBackend</span></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\"><span class=\"pre\">RemoteUserBackend</span></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\"><span class=\"pre\">user_can_authenticate</span></code></a> 总是返回 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></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\"><span class=\"pre\">get_user</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></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><p>返回与给定 <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> 的会话相关联的用户模型实例。</p>\n<p>它检查会话中存储的认证后端是否存在于 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">AUTHENTICATION_BACKENDS</span></code></a> 中。如果存在，它使用后端的 <code class=\"docutils literal notranslate\"><span class=\"pre\">get_user()</span></code> 方法检索用户模型实例，然后通过调用用户模型的 <a class=\"reference internal\" href=\"/zh-hans/3.1/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\"><span class=\"pre\">get_session_auth_hash()</span></code></a> 方法来认证会话。</p>\n<p>如果存储在会话中的认证后端不再在 <a class=\"reference internal\" href=\"/zh-hans/3.1/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">AUTHENTICATION_BACKENDS</span></code></a> 中，如果后端的 <code class=\"docutils literal notranslate\"><span class=\"pre\">get_user()</span></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\"><span class=\"pre\">AnonymousUser</span></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/3.1/ref/"},{"docname":"ref/contrib/index","title":"contrib 包","url":"/zh-hans/3.1/ref/contrib/"}],"prev":{"docname":"ref/contrib/admin/javascript","title":"管理的 JavaScript 自定义","url":"/zh-hans/3.1/ref/contrib/admin/javascript/"},"next":{"docname":"ref/contrib/contenttypes","title":"内容类型框架","url":"/zh-hans/3.1/ref/contrib/contenttypes/"},"formats":{"html":"/zh-hans/3.1/ref/contrib/auth/","markdown":"/zh-hans/3.1/ref/contrib/auth.md","json":"/zh-hans/3.1/ref/contrib/auth.json"},"source":"https://github.com/django/django/blob/stable/3.1.x/docs/ref/contrib/auth.txt","official":"https://docs.djangoproject.com/zh-hans/3.1/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","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}