{"title":"django.contrib.auth","version":"2.2","locale":"ko","docname":"ref/contrib/auth","url":"/ko/2.2/ref/contrib/auth/","canonical":"https://djangodocs.dev/ko/2.2/ref/contrib/auth/","summary":"This document provides API reference material for the components of Django’s authentication system.","html":"<h1><code class=\"docutils literal notranslate\">django.contrib.auth</code><a class=\"heading-anchor\" href=\"#django-contrib-auth\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>This document provides API reference material for the components of Django’s\nauthentication system. For more details on the usage of these components or\nhow to customize authentication and authorization see the <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/\"><span class=\"doc\">authentication\ntopic guide</span></a>.</p>\n<section id=\"user-model\">\n<h2><code class=\"docutils literal notranslate\">User</code> model<a class=\"heading-anchor\" href=\"#user-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">User</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<section id=\"fields\">\n<h3>Fields<a class=\"heading-anchor\" href=\"#fields\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">User</span></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> objects have the following\nfields:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.username\">\n<span class=\"sig-name descname\">username</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.username\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Required. 150 characters or fewer. Usernames may contain alphanumeric,\n<code class=\"docutils literal notranslate\">_</code>, <code class=\"docutils literal notranslate\">&#64;</code>, <code class=\"docutils literal notranslate\">+</code>, <code class=\"docutils literal notranslate\">.</code> and <code class=\"docutils literal notranslate\">-</code> characters.</p>\n<p>The <code class=\"docutils literal notranslate\">max_length</code> should be sufficient for many use cases. If you need\na longer length, please use a <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#specifying-custom-user-model\"><span class=\"std std-ref\">custom user model</span></a>. If you use MySQL with the <code class=\"docutils literal notranslate\">utf8mb4</code>\nencoding (recommended for proper Unicode support), specify at most\n<code class=\"docutils literal notranslate\">max_length=191</code> because MySQL can only create unique indexes with\n191 characters in that case by default.</p>\n<aside class=\"admonition-usernames-and-unicode admonition\" role=\"note\">\n<p class=\"admonition-title\">Usernames and Unicode</p>\n<p>Django originally accepted only ASCII letters and numbers in\nusernames. Although it wasn’t a deliberate choice, Unicode\ncharacters have always been accepted when using Python 3. Django\n1.10 officially added Unicode support in usernames, keeping the\nASCII-only behavior on Python 2.</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.first_name\">\n<span class=\"sig-name descname\">first_name</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.first_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Optional (<a class=\"reference internal\" href=\"/ko/2.2/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\">blank=True</code></a>). 30\ncharacters or fewer.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.last_name\">\n<span class=\"sig-name descname\">last_name</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.last_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Optional (<a class=\"reference internal\" href=\"/ko/2.2/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\">blank=True</code></a>). 150\ncharacters or fewer.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.email\">\n<span class=\"sig-name descname\">email</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.email\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Optional (<a class=\"reference internal\" href=\"/ko/2.2/ref/models/fields/#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\">blank=True</code></a>). Email\naddress.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.password\">\n<span class=\"sig-name descname\">password</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.password\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Required. A hash of, and metadata about, the password. (Django doesn’t\nstore the raw password.) Raw passwords can be arbitrarily long and can\ncontain any character. See the <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/passwords/\"><span class=\"doc\">password documentation</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.groups\">\n<span class=\"sig-name descname\">groups</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.groups\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Many-to-many relationship to <a class=\"reference internal\" href=\"#django.contrib.auth.models.Group\" title=\"django.contrib.auth.models.Group\"><code class=\"xref py py-class docutils literal notranslate\">Group</code></a></p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.user_permissions\">\n<span class=\"sig-name descname\">user_permissions</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.user_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Many-to-many relationship to <a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\">Permission</code></a></p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_staff\">\n<span class=\"sig-name descname\">is_staff</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_staff\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Boolean. Designates whether this user can access the admin site.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_active\">\n<span class=\"sig-name descname\">is_active</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_active\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Boolean. Designates whether this user account should be considered\nactive. We recommend that you set this flag to <code class=\"docutils literal notranslate\">False</code> instead of\ndeleting accounts; that way, if your applications have any foreign keys\nto users, the foreign keys won’t break.</p>\n<p>This doesn’t necessarily control whether or not the user can log in.\nAuthentication backends aren’t required to check for the <code class=\"docutils literal notranslate\">is_active</code>\nflag but the default backend\n(<a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend\" title=\"django.contrib.auth.backends.ModelBackend\"><code class=\"xref py py-class docutils literal notranslate\">ModelBackend</code></a>) and the\n<a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend\" title=\"django.contrib.auth.backends.RemoteUserBackend\"><code class=\"xref py py-class docutils literal notranslate\">RemoteUserBackend</code></a> do. You can\nuse <a class=\"reference internal\" href=\"#django.contrib.auth.backends.AllowAllUsersModelBackend\" title=\"django.contrib.auth.backends.AllowAllUsersModelBackend\"><code class=\"xref py py-class docutils literal notranslate\">AllowAllUsersModelBackend</code></a>\nor <a class=\"reference internal\" href=\"#django.contrib.auth.backends.AllowAllUsersRemoteUserBackend\" title=\"django.contrib.auth.backends.AllowAllUsersRemoteUserBackend\"><code class=\"xref py py-class docutils literal notranslate\">AllowAllUsersRemoteUserBackend</code></a>\nif you want to allow inactive users to login. In this case, you’ll also\nwant to customize the\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\">AuthenticationForm</code></a> used by the\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#django.contrib.auth.views.LoginView\" title=\"django.contrib.auth.views.LoginView\"><code class=\"xref py py-class docutils literal notranslate\">LoginView</code></a> as it rejects inactive\nusers. Be aware that the permission-checking methods such as\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.has_perm\" title=\"django.contrib.auth.models.User.has_perm\"><code class=\"xref py py-meth docutils literal notranslate\">has_perm()</code></a> and the\nauthentication in the Django admin all return <code class=\"docutils literal notranslate\">False</code> for inactive\nusers.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_superuser\">\n<span class=\"sig-name descname\">is_superuser</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_superuser\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Boolean. Designates that this user has all permissions without\nexplicitly assigning them.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.last_login\">\n<span class=\"sig-name descname\">last_login</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.last_login\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A datetime of the user’s last login.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.date_joined\">\n<span class=\"sig-name descname\">date_joined</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.date_joined\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A datetime designating when the account was created. Is set to the\ncurrent date/time by default when the account is created.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"attributes\">\n<h3>Attributes<a class=\"heading-anchor\" href=\"#attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">User</span></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_authenticated\">\n<span class=\"sig-name descname\">is_authenticated</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_authenticated\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Read-only attribute which is always <code class=\"docutils literal notranslate\">True</code> (as opposed to\n<code class=\"docutils literal notranslate\">AnonymousUser.is_authenticated</code> which is always <code class=\"docutils literal notranslate\">False</code>). This is\na way to tell if the user has been authenticated. This does not imply\nany permissions and doesn’t check if the user is active or has a valid\nsession. Even though normally you will check this attribute on\n<code class=\"docutils literal notranslate\">request.user</code> to find out whether it has been populated by the\n<a class=\"reference internal\" href=\"/ko/2.2/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware\" title=\"django.contrib.auth.middleware.AuthenticationMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">AuthenticationMiddleware</code></a>\n(representing the currently logged-in user), you should know this\nattribute is <code class=\"docutils literal notranslate\">True</code> for any <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> instance.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.is_anonymous\">\n<span class=\"sig-name descname\">is_anonymous</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.is_anonymous\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Read-only attribute which is always <code class=\"docutils literal notranslate\">False</code>. This is a way of\ndifferentiating <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> and <a class=\"reference internal\" href=\"#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\">AnonymousUser</code></a>\nobjects. Generally, you should prefer using\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_authenticated\" title=\"django.contrib.auth.models.User.is_authenticated\"><code class=\"xref py py-attr docutils literal notranslate\">is_authenticated</code></a> to this\nattribute.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"methods\">\n<h3>Methods<a class=\"heading-anchor\" href=\"#methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">User</span></dt>\n<dd><dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_username\">\n<span class=\"sig-name descname\">get_username</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_username\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the username for the user. Since the <code class=\"docutils literal notranslate\">User</code> model can be\nswapped out, you should use this method instead of referencing the\nusername attribute directly.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_full_name\">\n<span class=\"sig-name descname\">get_full_name</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_full_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.first_name\" title=\"django.contrib.auth.models.User.first_name\"><code class=\"xref py py-attr docutils literal notranslate\">first_name</code></a> plus\nthe <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.last_name\" title=\"django.contrib.auth.models.User.last_name\"><code class=\"xref py py-attr docutils literal notranslate\">last_name</code></a>, with a space in\nbetween.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_short_name\">\n<span class=\"sig-name descname\">get_short_name</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_short_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.first_name\" title=\"django.contrib.auth.models.User.first_name\"><code class=\"xref py py-attr docutils literal notranslate\">first_name</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.set_password\">\n<span class=\"sig-name descname\">set_password</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">raw_password</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.set_password\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sets the user’s password to the given raw string, taking care of the\npassword hashing. Doesn’t save the\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> object.</p>\n<p>When the <code class=\"docutils literal notranslate\">raw_password</code> is <code class=\"docutils literal notranslate\">None</code>, the password will be set to an\nunusable password, as if\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.set_unusable_password\" title=\"django.contrib.auth.models.User.set_unusable_password\"><code class=\"xref py py-meth docutils literal notranslate\">set_unusable_password()</code></a>\nwere used.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.check_password\">\n<span class=\"sig-name descname\">check_password</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">raw_password</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.check_password\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if the given raw string is the correct password for\nthe user. (This takes care of the password hashing in making the\ncomparison.)</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.set_unusable_password\">\n<span class=\"sig-name descname\">set_unusable_password</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.set_unusable_password\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Marks the user as having no password set.  This isn’t the same as\nhaving a blank string for a password.\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.check_password\" title=\"django.contrib.auth.models.User.check_password\"><code class=\"xref py py-meth docutils literal notranslate\">check_password()</code></a> for this user\nwill never return <code class=\"docutils literal notranslate\">True</code>. Doesn’t save the\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> object.</p>\n<p>You may need this if authentication for your application takes place\nagainst an existing external source such as an LDAP directory.</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\">has_usable_password</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.has_usable_password\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">False</code> if\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.set_unusable_password\" title=\"django.contrib.auth.models.User.set_unusable_password\"><code class=\"xref py py-meth docutils literal notranslate\">set_unusable_password()</code></a> has\nbeen called for this user.</p>\n<aside class=\"version-note version-changed\" data-version=\"2.1\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 2.1</p><p>In older versions, this also returns <code class=\"docutils literal notranslate\">False</code> if the password is\n<code class=\"docutils literal notranslate\">None</code> or an empty string, or if the password uses a hasher\nthat’s not in the <a class=\"reference internal\" href=\"/ko/2.2/ref/settings/#std-setting-PASSWORD_HASHERS\"><code class=\"xref std std-setting docutils literal notranslate\">PASSWORD_HASHERS</code></a> setting. That\nbehavior is considered a bug as it prevents users with such\npasswords from requesting a password reset.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.get_group_permissions\">\n<span class=\"sig-name descname\">get_group_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_group_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a set of permission strings that the user has, through their\ngroups.</p>\n<p>If <code class=\"docutils literal notranslate\">obj</code> is passed in, only returns the group permissions for\nthis specific object.</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\">get_all_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.get_all_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a set of permission strings that the user has, both through\ngroup and user permissions.</p>\n<p>If <code class=\"docutils literal notranslate\">obj</code> is passed in, only returns the permissions for this\nspecific object.</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\">has_perm</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">perm</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.has_perm\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if the user has the specified permission, where perm\nis in the format <code class=\"docutils literal notranslate\">&quot;&lt;app label&gt;.&lt;permission codename&gt;&quot;</code>. (see\ndocumentation on <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#topic-authorization\"><span class=\"std std-ref\">permissions</span></a>). If the user is\ninactive, this method will always return <code class=\"docutils literal notranslate\">False</code>. For an active\nsuperuser, this method will always return <code class=\"docutils literal notranslate\">True</code>.</p>\n<p>If <code class=\"docutils literal notranslate\">obj</code> is passed in, this method won’t check for a permission for\nthe model, but for this specific object.</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\">has_perms</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">perm_list</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.has_perms\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if the user has each of the specified permissions,\nwhere each perm is in the format\n<code class=\"docutils literal notranslate\">&quot;&lt;app label&gt;.&lt;permission codename&gt;&quot;</code>. If the user is inactive,\nthis method will always return <code class=\"docutils literal notranslate\">False</code>. For an active superuser, this\nmethod will always return <code class=\"docutils literal notranslate\">True</code>.</p>\n<p>If <code class=\"docutils literal notranslate\">obj</code> is passed in, this method won’t check for permissions for\nthe model, but for the specific object.</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\">has_module_perms</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">package_name</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.has_module_perms\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns <code class=\"docutils literal notranslate\">True</code> if the user has any permissions in the given package\n(the Django app label). If the user is inactive, this method will\nalways return <code class=\"docutils literal notranslate\">False</code>. For an active superuser, this method will\nalways return <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.User.email_user\">\n<span class=\"sig-name descname\">email_user</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">subject</em>, <em class=\"sig-param\">message</em>, <em class=\"sig-param\">from_email<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.User.email_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sends an email to the user. If <code class=\"docutils literal notranslate\">from_email</code> is <code class=\"docutils literal notranslate\">None</code>, Django uses\nthe <a class=\"reference internal\" href=\"/ko/2.2/ref/settings/#std-setting-DEFAULT_FROM_EMAIL\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_FROM_EMAIL</code></a>. Any <code class=\"docutils literal notranslate\">**kwargs</code> are passed to the\nunderlying <a class=\"reference internal\" href=\"/ko/2.2/topics/email/#django.core.mail.send_mail\" title=\"django.core.mail.send_mail\"><code class=\"xref py py-meth docutils literal notranslate\">send_mail()</code></a> call.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"manager-methods\">\n<h3>Manager methods<a class=\"heading-anchor\" href=\"#manager-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">UserManager</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> model has a custom manager\nthat has the following helper methods (in addition to the methods provided\nby <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.BaseUserManager\" title=\"django.contrib.auth.models.BaseUserManager\"><code class=\"xref py py-class docutils literal notranslate\">BaseUserManager</code></a>):</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.UserManager.create_user\">\n<span class=\"sig-name descname\">create_user</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">username</em>, <em class=\"sig-param\">email<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">password<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra_fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager.create_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Creates, saves and returns a <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a>.</p>\n<p>The <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.username\" title=\"django.contrib.auth.models.User.username\"><code class=\"xref py py-attr docutils literal notranslate\">username</code></a> and\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.password\" title=\"django.contrib.auth.models.User.password\"><code class=\"xref py py-attr docutils literal notranslate\">password</code></a> are set as given. The\ndomain portion of <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.email\" title=\"django.contrib.auth.models.User.email\"><code class=\"xref py py-attr docutils literal notranslate\">email</code></a> is\nautomatically converted to lowercase, and the returned\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> object will have\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a> set to <code class=\"docutils literal notranslate\">True</code>.</p>\n<p>If no password is provided,\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.set_unusable_password\" title=\"django.contrib.auth.models.User.set_unusable_password\"><code class=\"xref py py-meth docutils literal notranslate\">set_unusable_password()</code></a> will\nbe called.</p>\n<p>The <code class=\"docutils literal notranslate\">extra_fields</code> keyword arguments are passed through to the\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a>’s <code class=\"docutils literal notranslate\">__init__</code> method to\nallow setting arbitrary fields on a <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#auth-custom-user\"><span class=\"std std-ref\">custom user model</span></a>.</p>\n<p>See <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#topics-auth-creating-users\"><span class=\"std std-ref\">Creating users</span></a> for example usage.</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\">create_superuser</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">username</em>, <em class=\"sig-param\">email</em>, <em class=\"sig-param\">password</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra_fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.UserManager.create_superuser\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Same as <a class=\"reference internal\" href=\"#django.contrib.auth.models.UserManager.create_user\" title=\"django.contrib.auth.models.UserManager.create_user\"><code class=\"xref py py-meth docutils literal notranslate\">create_user()</code></a>, but sets <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_staff\" title=\"django.contrib.auth.models.User.is_staff\"><code class=\"xref py py-attr docutils literal notranslate\">is_staff</code></a> and\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_superuser\" title=\"django.contrib.auth.models.User.is_superuser\"><code class=\"xref py py-attr docutils literal notranslate\">is_superuser</code></a> to <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n</section>\n<section id=\"anonymoususer-object\">\n<h2><code class=\"docutils literal notranslate\">AnonymousUser</code> object<a class=\"heading-anchor\" href=\"#anonymoususer-object\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.AnonymousUser\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">AnonymousUser</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.AnonymousUser\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\">django.contrib.auth.models.AnonymousUser</code></a> is a class that\nimplements the <a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">django.contrib.auth.models.User</code></a> interface, with\nthese differences:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/ko/2.2/topics/db/models/#automatic-primary-key-fields\"><span class=\"std std-ref\">id</span></a> is always <code class=\"docutils literal notranslate\">None</code>.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.username\" title=\"django.contrib.auth.models.User.username\"><code class=\"xref py py-attr docutils literal notranslate\">username</code></a> is always the empty\nstring.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.get_username\" title=\"django.contrib.auth.models.User.get_username\"><code class=\"xref py py-meth docutils literal notranslate\">get_username()</code></a> always returns\nthe empty string.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_anonymous\" title=\"django.contrib.auth.models.User.is_anonymous\"><code class=\"xref py py-attr docutils literal notranslate\">is_anonymous</code></a> is <code class=\"docutils literal notranslate\">True</code>\ninstead of <code class=\"docutils literal notranslate\">False</code>.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_authenticated\" title=\"django.contrib.auth.models.User.is_authenticated\"><code class=\"xref py py-attr docutils literal notranslate\">is_authenticated</code></a> is\n<code class=\"docutils literal notranslate\">False</code> instead of <code class=\"docutils literal notranslate\">True</code>.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_staff\" title=\"django.contrib.auth.models.User.is_staff\"><code class=\"xref py py-attr docutils literal notranslate\">is_staff</code></a> and\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_superuser\" title=\"django.contrib.auth.models.User.is_superuser\"><code class=\"xref py py-attr docutils literal notranslate\">is_superuser</code></a> are always\n<code class=\"docutils literal notranslate\">False</code>.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a> is always <code class=\"docutils literal notranslate\">False</code>.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.groups\" title=\"django.contrib.auth.models.User.groups\"><code class=\"xref py py-attr docutils literal notranslate\">groups</code></a> and\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.user_permissions\" title=\"django.contrib.auth.models.User.user_permissions\"><code class=\"xref py py-attr docutils literal notranslate\">user_permissions</code></a> are always\nempty.</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.auth.models.User.set_password\" title=\"django.contrib.auth.models.User.set_password\"><code class=\"xref py py-meth docutils literal notranslate\">set_password()</code></a>,\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.check_password\" title=\"django.contrib.auth.models.User.check_password\"><code class=\"xref py py-meth docutils literal notranslate\">check_password()</code></a>,\n<a class=\"reference internal\" href=\"/ko/2.2/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> and\n<a class=\"reference internal\" href=\"/ko/2.2/ref/models/instances/#django.db.models.Model.delete\" title=\"django.db.models.Model.delete\"><code class=\"xref py py-meth docutils literal notranslate\">delete()</code></a> raise <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#NotImplementedError\" title=\"(Python v3.14에서)\"><code class=\"xref py py-exc docutils literal notranslate\">NotImplementedError</code></a>.</p></li>\n</ul>\n</dd></dl>\n\n<p>In practice, you probably won’t need to use\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\">AnonymousUser</code></a> objects on your own, but\nthey’re used by Web requests, as explained in the next section.</p>\n</section>\n<section id=\"permission-model\">\n<h2><code class=\"docutils literal notranslate\">Permission</code> model<a class=\"heading-anchor\" href=\"#permission-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Permission\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">Permission</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Permission\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<section id=\"id1\">\n<h3>Fields<a class=\"heading-anchor\" href=\"#id1\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\">Permission</code></a> objects have the following\nfields:</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">Permission</span></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Permission.name\">\n<span class=\"sig-name descname\">name</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Permission.name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Required. 255 characters or fewer. Example: <code class=\"docutils literal notranslate\">'Can vote'</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Permission.content_type\">\n<span class=\"sig-name descname\">content_type</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Permission.content_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Required. A reference to the <code class=\"docutils literal notranslate\">django_content_type</code> database table,\nwhich contains a record for each installed model.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Permission.codename\">\n<span class=\"sig-name descname\">codename</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Permission.codename\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Required. 100 characters or fewer. Example: <code class=\"docutils literal notranslate\">'can_vote'</code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"id2\">\n<h3>Methods<a class=\"heading-anchor\" href=\"#id2\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\">Permission</code></a> objects have the standard\ndata-access methods like any other <a class=\"reference internal\" href=\"/ko/2.2/ref/models/instances/\"><span class=\"doc\">Django model</span></a>.</p>\n</section>\n</section>\n<section id=\"group-model\">\n<h2><code class=\"docutils literal notranslate\">Group</code> model<a class=\"heading-anchor\" href=\"#group-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Group\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">Group</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Group\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<section id=\"id3\">\n<h3>Fields<a class=\"heading-anchor\" href=\"#id3\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"#django.contrib.auth.models.Group\" title=\"django.contrib.auth.models.Group\"><code class=\"xref py py-class docutils literal notranslate\">Group</code></a> objects have the following fields:</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">Group</span></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Group.name\">\n<span class=\"sig-name descname\">name</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Group.name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Required. 150 characters or fewer. Any characters are permitted.\nExample: <code class=\"docutils literal notranslate\">'Awesome Users'</code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"2.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 2.2</p><p>The <code class=\"docutils literal notranslate\">max_length</code> increased from 80 to 150 characters.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.models.Group.permissions\">\n<span class=\"sig-name descname\">permissions</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.models.Group.permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Many-to-many field to <a class=\"reference internal\" href=\"#django.contrib.auth.models.Permission\" title=\"django.contrib.auth.models.Permission\"><code class=\"xref py py-class docutils literal notranslate\">Permission</code></a>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>group<span class=\"o\">.</span>permissions<span class=\"o\">.</span>set<span class=\"p\">([</span>permission_list<span class=\"p\">])</span>\ngroup<span class=\"o\">.</span>permissions<span class=\"o\">.</span>add<span class=\"p\">(</span>permission<span class=\"p\">,</span> permission<span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">)</span>\ngroup<span class=\"o\">.</span>permissions<span class=\"o\">.</span>remove<span class=\"p\">(</span>permission<span class=\"p\">,</span> permission<span class=\"p\">,</span> <span class=\"o\">...</span><span class=\"p\">)</span>\ngroup<span class=\"o\">.</span>permissions<span class=\"o\">.</span>clear<span class=\"p\">()</span>\n</code></pre></div>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n</section>\n<section id=\"validators\">\n<h2>Validators<a class=\"heading-anchor\" href=\"#validators\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.validators.ASCIIUsernameValidator\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">validators.</span><span class=\"sig-name descname\">ASCIIUsernameValidator</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.validators.ASCIIUsernameValidator\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A field validator allowing only ASCII letters and numbers, in addition to\n<code class=\"docutils literal notranslate\">&#64;</code>, <code class=\"docutils literal notranslate\">.</code>, <code class=\"docutils literal notranslate\">+</code>, <code class=\"docutils literal notranslate\">-</code>, and <code class=\"docutils literal notranslate\">_</code>.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.validators.UnicodeUsernameValidator\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">validators.</span><span class=\"sig-name descname\">UnicodeUsernameValidator</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.validators.UnicodeUsernameValidator\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A field validator allowing Unicode characters, in addition to <code class=\"docutils literal notranslate\">&#64;</code>, <code class=\"docutils literal notranslate\">.</code>,\n<code class=\"docutils literal notranslate\">+</code>, <code class=\"docutils literal notranslate\">-</code>, and <code class=\"docutils literal notranslate\">_</code>. The default validator for <code class=\"docutils literal notranslate\">User.username</code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"module-django.contrib.auth.signals\">\n<span id=\"login-and-logout-signals\"></span><span id=\"topics-auth-signals\"></span><h2>Login and logout signals<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>The auth framework uses the following <a class=\"reference internal\" href=\"/ko/2.2/topics/signals/\"><span class=\"doc\">signals</span></a> that\ncan be used for notification when a user logs in or out.</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\">user_logged_in</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>Sent when a user logs in successfully.</p>\n<p>Arguments sent with this signal:</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\">sender</code></dt><dd><p>The class of the user that just logged in.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">request</code></dt><dd><p>The current <a class=\"reference internal\" href=\"/ko/2.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> instance.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">user</code></dt><dd><p>The user instance that just logged in.</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\">user_logged_out</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>Sent when the logout method is called.</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\">sender</code></dt><dd><p>As above: the class of the user that just logged out or <code class=\"docutils literal notranslate\">None</code>\nif the user was not authenticated.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">request</code></dt><dd><p>The current <a class=\"reference internal\" href=\"/ko/2.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> instance.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">user</code></dt><dd><p>The user instance that just logged out or <code class=\"docutils literal notranslate\">None</code> if the\nuser was not authenticated.</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\">user_login_failed</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>Sent when the user failed to login successfully</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\">sender</code></dt><dd><p>The name of the module used for authentication.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">credentials</code></dt><dd><p>A dictionary of keyword arguments containing the user credentials that were\npassed to <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\">authenticate()</code></a> or your own custom\nauthentication backend. Credentials matching a set of ‘sensitive’ patterns,\n(including password) will not be sent in the clear as part of the signal.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">request</code></dt><dd><p>The <a class=\"reference internal\" href=\"/ko/2.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> object, if one was provided to\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\">authenticate()</code></a>.</p>\n</dd>\n</dl>\n</dd></dl>\n\n</section>\n<section id=\"module-django.contrib.auth.backends\">\n<span id=\"authentication-backends\"></span><span id=\"authentication-backends-reference\"></span><h2>Authentication backends<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>This section details the authentication backends that come with Django. For\ninformation on how to use them and how to write your own authentication\nbackends, see the <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#authentication-backends\"><span class=\"std std-ref\">Other authentication sources section</span></a> of the <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/\"><span class=\"doc\">User authentication guide</span></a>.</p>\n<section id=\"available-authentication-backends\">\n<h3>Available authentication backends<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>The following backends are available in <a class=\"reference internal\" href=\"#module-django.contrib.auth.backends\" title=\"django.contrib.auth.backends: Django's built-in authentication backend classes.\"><code class=\"xref py py-mod docutils literal notranslate\">django.contrib.auth.backends</code></a>:</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ModelBackend</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>This is the default authentication backend used by Django.  It\nauthenticates using credentials consisting of a user identifier and\npassword.  For Django’s default user model, the user identifier is the\nusername, for custom user models it is the field specified by\nUSERNAME_FIELD (see <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/\"><span class=\"doc\">Customizing Users and authentication</span></a>).</p>\n<p>It also handles the default permissions model as defined for\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User\" title=\"django.contrib.auth.models.User\"><code class=\"xref py py-class docutils literal notranslate\">User</code></a> and\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.PermissionsMixin\" title=\"django.contrib.auth.models.PermissionsMixin\"><code class=\"xref py py-class docutils literal notranslate\">PermissionsMixin</code></a>.</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.has_perm\" title=\"django.contrib.auth.backends.ModelBackend.has_perm\"><code class=\"xref py py-meth docutils literal notranslate\">has_perm()</code></a>, <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.get_all_permissions\" title=\"django.contrib.auth.backends.ModelBackend.get_all_permissions\"><code class=\"xref py py-meth docutils literal notranslate\">get_all_permissions()</code></a>, <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.get_user_permissions\" title=\"django.contrib.auth.backends.ModelBackend.get_user_permissions\"><code class=\"xref py py-meth docutils literal notranslate\">get_user_permissions()</code></a>,\nand <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.get_group_permissions\" title=\"django.contrib.auth.backends.ModelBackend.get_group_permissions\"><code class=\"xref py py-meth docutils literal notranslate\">get_group_permissions()</code></a> allow an object to be passed as a\nparameter for object-specific permissions, but this backend does not\nimplement them other than returning an empty set of permissions if\n<code class=\"docutils literal notranslate\">obj is not None</code>.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.authenticate\">\n<span class=\"sig-name descname\">authenticate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">username<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">password<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.authenticate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tries to authenticate <code class=\"docutils literal notranslate\">username</code> with <code class=\"docutils literal notranslate\">password</code> by calling\n<a class=\"reference internal\" href=\"#django.contrib.auth.models.User.check_password\" title=\"django.contrib.auth.models.User.check_password\"><code class=\"xref py py-meth docutils literal notranslate\">User.check_password</code></a>. If no <code class=\"docutils literal notranslate\">username</code>\nis provided, it tries to fetch a username from <code class=\"docutils literal notranslate\">kwargs</code> using the\nkey <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.USERNAME_FIELD\" title=\"django.contrib.auth.models.CustomUser.USERNAME_FIELD\"><code class=\"xref py py-attr docutils literal notranslate\">CustomUser.USERNAME_FIELD</code></a>. Returns an\nauthenticated user or <code class=\"docutils literal notranslate\">None</code>.</p>\n<p><code class=\"docutils literal notranslate\">request</code> is an <a class=\"reference internal\" href=\"/ko/2.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> and may be <code class=\"docutils literal notranslate\">None</code>\nif it wasn’t provided to <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\">authenticate()</code></a>\n(which passes it on to the backend).</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\">get_user_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.get_user_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the set of permission strings the <code class=\"docutils literal notranslate\">user_obj</code> has from their\nown user permissions. Returns an empty set if\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous\" title=\"django.contrib.auth.models.AbstractBaseUser.is_anonymous\"><code class=\"xref py py-attr docutils literal notranslate\">is_anonymous</code></a> or\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a> is <code class=\"docutils literal notranslate\">False</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.get_group_permissions\">\n<span class=\"sig-name descname\">get_group_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.get_group_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the set of permission strings the <code class=\"docutils literal notranslate\">user_obj</code> has from the\npermissions of the groups they belong. Returns an empty set if\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous\" title=\"django.contrib.auth.models.AbstractBaseUser.is_anonymous\"><code class=\"xref py py-attr docutils literal notranslate\">is_anonymous</code></a> or\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a>  is <code class=\"docutils literal notranslate\">False</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.get_all_permissions\">\n<span class=\"sig-name descname\">get_all_permissions</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.get_all_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the set of permission strings the <code class=\"docutils literal notranslate\">user_obj</code> has, including both\nuser permissions and group permissions. Returns an empty set if\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.is_anonymous\" title=\"django.contrib.auth.models.AbstractBaseUser.is_anonymous\"><code class=\"xref py py-attr docutils literal notranslate\">is_anonymous</code></a> or\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a> is <code class=\"docutils literal notranslate\">False</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.has_perm\">\n<span class=\"sig-name descname\">has_perm</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">perm</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.has_perm\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Uses <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.get_all_permissions\" title=\"django.contrib.auth.backends.ModelBackend.get_all_permissions\"><code class=\"xref py py-meth docutils literal notranslate\">get_all_permissions()</code></a> to check if <code class=\"docutils literal notranslate\">user_obj</code> has the\npermission string <code class=\"docutils literal notranslate\">perm</code>. Returns <code class=\"docutils literal notranslate\">False</code> if the user is not\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.ModelBackend.has_module_perms\">\n<span class=\"sig-name descname\">has_module_perms</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">user_obj</em>, <em class=\"sig-param\">app_label</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.has_module_perms\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns whether the <code class=\"docutils literal notranslate\">user_obj</code> has any permissions on the app\n<code class=\"docutils literal notranslate\">app_label</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\">user_can_authenticate</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.ModelBackend.user_can_authenticate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns whether the user is allowed to authenticate. To match the\nbehavior of <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\">AuthenticationForm</code></a>\nwhich <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed\" title=\"django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed\"><code class=\"xref py py-meth docutils literal notranslate\">prohibits inactive users from logging in</code></a>,\nthis method returns <code class=\"docutils literal notranslate\">False</code> for users with <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active=False</code></a>. Custom user models that\ndon’t have an <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a>\nfield are allowed.</p>\n</dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.AllowAllUsersModelBackend\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">AllowAllUsersModelBackend</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.AllowAllUsersModelBackend\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Same as <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend\" title=\"django.contrib.auth.backends.ModelBackend\"><code class=\"xref py py-class docutils literal notranslate\">ModelBackend</code></a> except that it doesn’t reject inactive users\nbecause <a class=\"reference internal\" href=\"#django.contrib.auth.backends.ModelBackend.user_can_authenticate\" title=\"django.contrib.auth.backends.ModelBackend.user_can_authenticate\"><code class=\"xref py py-meth docutils literal notranslate\">user_can_authenticate()</code></a> always returns <code class=\"docutils literal notranslate\">True</code>.</p>\n<p>When using this backend, you’ll likely want to customize the\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\">AuthenticationForm</code></a> used by the\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#django.contrib.auth.views.LoginView\" title=\"django.contrib.auth.views.LoginView\"><code class=\"xref py py-class docutils literal notranslate\">LoginView</code></a> by overriding the\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed\" title=\"django.contrib.auth.forms.AuthenticationForm.confirm_login_allowed\"><code class=\"xref py py-meth docutils literal notranslate\">confirm_login_allowed()</code></a>\nmethod as it rejects inactive users.</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">RemoteUserBackend</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Use this backend to take advantage of external-to-Django-handled\nauthentication.  It authenticates using usernames passed in\n<a class=\"reference internal\" href=\"/ko/2.2/ref/request-response/#django.http.HttpRequest.META\" title=\"django.http.HttpRequest.META\"><code class=\"xref py py-attr docutils literal notranslate\">request.META['REMOTE_USER']</code></a>.  See\nthe <a class=\"reference internal\" href=\"/ko/2.2/howto/auth-remote-user/\"><span class=\"doc\">Authenticating against REMOTE_USER</span></a>\ndocumentation.</p>\n<p>If you need more control, you can create your own authentication backend\nthat inherits from this class and override these attributes or methods:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\">\n<span class=\"sig-name descname\">create_unknown_user</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">True</code> or <code class=\"docutils literal notranslate\">False</code>. Determines whether or not a user object is\ncreated if not already in the database  Defaults to <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.authenticate\">\n<span class=\"sig-name descname\">authenticate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">remote_user</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.authenticate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The username passed as <code class=\"docutils literal notranslate\">remote_user</code> is considered trusted. This\nmethod simply returns the user object with the given username, creating\na new user object if <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\" title=\"django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\"><code class=\"xref py py-attr docutils literal notranslate\">create_unknown_user</code></a> is\n<code class=\"docutils literal notranslate\">True</code>.</p>\n<p>Returns <code class=\"docutils literal notranslate\">None</code> if <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\" title=\"django.contrib.auth.backends.RemoteUserBackend.create_unknown_user\"><code class=\"xref py py-attr docutils literal notranslate\">create_unknown_user</code></a> is\n<code class=\"docutils literal notranslate\">False</code> and a <code class=\"docutils literal notranslate\">User</code> object with the given username is not found in\nthe database.</p>\n<p><code class=\"docutils literal notranslate\">request</code> is an <a class=\"reference internal\" href=\"/ko/2.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> and may be <code class=\"docutils literal notranslate\">None</code>\nif it wasn’t provided to <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\">authenticate()</code></a>\n(which passes it on to the backend).</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\">clean_username</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">username</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.clean_username\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Performs any cleaning on the <code class=\"docutils literal notranslate\">username</code> (e.g. stripping LDAP DN\ninformation) prior to using it to get or create a user object. Returns\nthe cleaned username.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.configure_user\">\n<span class=\"sig-name descname\">configure_user</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">user</em><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>Configures a newly created user.  This method is called immediately\nafter a new user is created, and can be used to perform custom setup\nactions, such as setting the user’s groups based on attributes in an\nLDAP directory. Returns the user object.</p>\n<p><code class=\"docutils literal notranslate\">request</code> is an <a class=\"reference internal\" href=\"/ko/2.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a> and may be <code class=\"docutils literal notranslate\">None</code>\nif it wasn’t provided to <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/default/#django.contrib.auth.authenticate\" title=\"django.contrib.auth.authenticate\"><code class=\"xref py py-func docutils literal notranslate\">authenticate()</code></a>\n(which passes it on to the backend).</p>\n<aside class=\"version-note version-changed\" data-version=\"2.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 2.2</p><p>The <code class=\"docutils literal notranslate\">request</code> argument was added. Support for method overrides\nthat don’t accept it will be removed in Django 3.1.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.RemoteUserBackend.user_can_authenticate\">\n<span class=\"sig-name descname\">user_can_authenticate</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.RemoteUserBackend.user_can_authenticate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns whether the user is allowed to authenticate. This method\nreturns <code class=\"docutils literal notranslate\">False</code> for users with <a class=\"reference internal\" href=\"#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active=False</code></a>. Custom user models that\ndon’t have an <a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.CustomUser.is_active\" title=\"django.contrib.auth.models.CustomUser.is_active\"><code class=\"xref py py-attr docutils literal notranslate\">is_active</code></a>\nfield are allowed.</p>\n</dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.backends.AllowAllUsersRemoteUserBackend\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">AllowAllUsersRemoteUserBackend</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.backends.AllowAllUsersRemoteUserBackend\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Same as <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend\" title=\"django.contrib.auth.backends.RemoteUserBackend\"><code class=\"xref py py-class docutils literal notranslate\">RemoteUserBackend</code></a> except that it doesn’t reject inactive\nusers because <a class=\"reference internal\" href=\"#django.contrib.auth.backends.RemoteUserBackend.user_can_authenticate\" title=\"django.contrib.auth.backends.RemoteUserBackend.user_can_authenticate\"><code class=\"xref py py-attr docutils literal notranslate\">user_can_authenticate</code></a> always\nreturns <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"utility-functions\">\n<h2>Utility functions<a class=\"heading-anchor\" href=\"#utility-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.auth.get_user\">\n<span class=\"sig-name descname\">get_user</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.auth.get_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the user model instance associated with the given <code class=\"docutils literal notranslate\">request</code>’s\nsession.</p>\n<p>It checks if the authentication backend stored in the session is present in\n<a class=\"reference internal\" href=\"/ko/2.2/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\">AUTHENTICATION_BACKENDS</code></a>. If so, it uses the backend’s\n<code class=\"docutils literal notranslate\">get_user()</code> method to retrieve the user model instance and then verifies\nthe session by calling the user model’s\n<a class=\"reference internal\" href=\"/ko/2.2/topics/auth/customizing/#django.contrib.auth.models.AbstractBaseUser.get_session_auth_hash\" title=\"django.contrib.auth.models.AbstractBaseUser.get_session_auth_hash\"><code class=\"xref py py-meth docutils literal notranslate\">get_session_auth_hash()</code></a>\nmethod.</p>\n<p>Returns an instance of <a class=\"reference internal\" href=\"#django.contrib.auth.models.AnonymousUser\" title=\"django.contrib.auth.models.AnonymousUser\"><code class=\"xref py py-class docutils literal notranslate\">AnonymousUser</code></a>\nif the authentication backend stored in the session is no longer in\n<a class=\"reference internal\" href=\"/ko/2.2/ref/settings/#std-setting-AUTHENTICATION_BACKENDS\"><code class=\"xref std std-setting docutils literal notranslate\">AUTHENTICATION_BACKENDS</code></a>, if a user isn’t returned by the\nbackend’s <code class=\"docutils literal notranslate\">get_user()</code> method, or if the session auth hash doesn’t\nvalidate.</p>\n</dd></dl>\n\n</section>","rootId":"django-contrib-auth","toc":[{"title":"User model","anchor":"user-model","children":[{"title":"Fields","anchor":"fields","children":[]},{"title":"Attributes","anchor":"attributes","children":[]},{"title":"Methods","anchor":"methods","children":[]},{"title":"Manager methods","anchor":"manager-methods","children":[]}]},{"title":"AnonymousUser object","anchor":"anonymoususer-object","children":[]},{"title":"Permission model","anchor":"permission-model","children":[{"title":"Fields","anchor":"id1","children":[]},{"title":"Methods","anchor":"id2","children":[]}]},{"title":"Group model","anchor":"group-model","children":[{"title":"Fields","anchor":"id3","children":[]}]},{"title":"Validators","anchor":"validators","children":[]},{"title":"Login and logout signals","anchor":"module-django.contrib.auth.signals","children":[]},{"title":"Authentication backends","anchor":"module-django.contrib.auth.backends","children":[{"title":"Available authentication backends","anchor":"available-authentication-backends","children":[]}]},{"title":"Utility functions","anchor":"utility-functions","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API Reference","url":"/ko/2.2/ref/"},{"docname":"ref/contrib/index","title":"contrib packages","url":"/ko/2.2/ref/contrib/"}],"prev":{"docname":"ref/contrib/admin/javascript","title":"JavaScript customizations in the admin","url":"/ko/2.2/ref/contrib/admin/javascript/"},"next":{"docname":"ref/contrib/contenttypes","title":"The contenttypes framework","url":"/ko/2.2/ref/contrib/contenttypes/"},"formats":{"html":"/ko/2.2/ref/contrib/auth/","markdown":"/ko/2.2/ref/contrib/auth.md","json":"/ko/2.2/ref/contrib/auth.json"},"source":"https://github.com/django/django/blob/stable/2.2.x/docs/ref/contrib/auth.txt","official":"https://docs.djangoproject.com/ko/2.2/ref/contrib/auth/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11"],"inLocales":["en","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}