首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django ` `LookupError: App 'accounts‘没有'User’模型`导致AUTH_USER_MODEL失败,`accounts.User`尚未安装

问题分析

LookupError: App 'accounts' has no 'User' model 这个错误通常发生在使用 Django 框架时,特别是在自定义用户模型(User Model)的情况下。Django 默认的用户模型是 django.contrib.auth.models.User,但有时我们需要自定义用户模型以满足特定需求。当 Django 在 accounts 应用中找不到 User 模型时,就会抛出这个错误。

原因

  1. 应用未安装accounts 应用可能没有被正确安装到 Django 项目中。
  2. 模型未定义accounts 应用中没有定义 User 模型。
  3. 设置不正确AUTH_USER_MODEL 设置不正确,指向了一个不存在的模型。

解决方法

1. 确保应用已安装

确保 accounts 应用已经添加到 INSTALLED_APPS 中:

代码语言:txt
复制
# settings.py
INSTALLED_APPS = [
    ...
    'accounts',
    ...
]

2. 定义自定义用户模型

accounts 应用中定义自定义用户模型。例如:

代码语言:txt
复制
# accounts/models.py
from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    # 添加自定义字段
    birth_date = models.DateField(null=True, blank=True)

3. 设置 AUTH_USER_MODEL

settings.py 中设置 AUTH_USER_MODEL 指向自定义用户模型:

代码语言:txt
复制
# settings.py
AUTH_USER_MODEL = 'accounts.CustomUser'

4. 迁移数据库

确保运行迁移命令以创建自定义用户模型的数据库表:

代码语言:txt
复制
python manage.py makemigrations accounts
python manage.py migrate

示例代码

以下是一个完整的示例,展示了如何在 Django 项目中自定义用户模型并正确配置:

accounts/models.py

代码语言:txt
复制
from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    birth_date = models.DateField(null=True, blank=True)

settings.py

代码语言:txt
复制
INSTALLED_APPS = [
    ...
    'accounts',
    ...
]

AUTH_USER_MODEL = 'accounts.CustomUser'

迁移数据库

代码语言:txt
复制
python manage.py makemigrations accounts
python manage.py migrate

参考链接

通过以上步骤,你应该能够解决 LookupError: App 'accounts' has no 'User' model 错误,并成功使用自定义用户模型。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django User 模块之 AbstractUser 扩展详解

… 你可以看出,User 模块继承了 AbstractUser 抽象基类,而仅仅只是继承了,并没有对 AbstractUser 进行任何扩展。...注意:为了让 Django 能够识别使用自定义的用户模型,必须要在 settings.py 中设置自定义模块位置,如在 settings.py 上添加 AUTH_USER_MODEL = ‘blog.user...所以,如果之前是使用例如 AUTH_USER_MODEL = auth.user 的用户模型,并重新将其自定义为 AUTH_USER_MODEL = blog.user 请删掉 migrations 目录下的所有文件...内置用户类AbstractUser 我们在之前讲过了model模型的作用和父类的作用,这次介绍的内置用户类AbstractUser就是Django内置的一个关于用户操作的类,它极大地方便了我们对model...模型中对User用户类的设计。

2K10
  • 自定义 DjangoUser Model,扩展 AbstractUser类注意事项

    中设置AUTH_USER_MODEL: # settings.py # 格式为 "....1.修改配置文件,覆盖默认的User模型 Django允许你通过修改setting.py文件中的 AUTH_USER_MODEL 设置覆盖默认的User模型,其值引用一个自定义的模型。...AUTH_USER_MODEL = 'myapp.MyUser' 上面的值表示Django应用的名称(必须位于INSTALLLED_APPS中)和你想使用的User模型的名称。...警告 : 1.确保 AUTH_USER_MODEL 引用的模型在所属app中第一个迁移文件中被创建 由于Django的可交换模型的动态依赖特性的局限,你必须确保 AUTH_USER_MODEL 引用的模型在所属...has_module_perms(app_label): user是否拥有app中访问models的权限 你同样也需要注册你自定义的用户模型到admin。

    6.1K20

    【愚公系列】2022年01月 Django商城项目12-登录界面-登录和退出功能实现

    文章目录 一、登录功能实现 1.使用django自带的用户登录模型配置 2.UsernameMobileModelBackend校验函数源码 3.登录的业务逻辑实现 4.用户名展示 5.实际效果 二、...退出功能实现 1.退出的业务逻辑实现 总结 一、登录功能实现 1.使用django自带的用户登录模型配置 # 允许自定义用户模型AUTH_USER_MODEL = 'users.User' #...修改默认的认证后端 AUTHENTICATION_BACKENDS = [ # 'django.contrib.auth.backends.ModelBackend' 'app.users.utils.UsernameMobileModelBackend...校验函数源码 import re from django.contrib.auth.backends import ModelBackend from app.users.models import...el: '#app', // 修改Vue变量的读取语法,避免和django模板语法冲突 delimiters: ['[[', ']]'], data: { host

    42510

    重新整理django中Auth模块

    0907自我总结 重新整理django中Auth模块 from django.contrib import auth 一.设置 默认Auth表单 auth默认是使用自带的user表单 自定义Auth表单...写法如下: # 引用Django自带的User表,继承使用时需要设置 AUTH_USER_MODEL = "app名.UserInfo" 在modles.py创建表单模型可以对AbstractUser进行继承因为我们可以从源码中看出来...该用户即使没有登录,使用该函数也不会报错。...user就为真没有就没否 四.登入装饰器 login_requierd() auth 给我们提供的一个装饰器工具,用来快捷的给某个视图添加登录校验。...若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ' 并传递当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。

    1K10

    Django实战-信息资讯-重构 USER 模型

    一、指定自定义的用户模型Django 自定义的 User model 满足一些最低要求: 模型必须有一个唯一的字段可被用于识别目的。可以是一个用户名、电子邮件或任何其它独特属性。...Django 允许通过修改 settings.py 文件中的 AUTH_USER_MODEL 设置覆盖默认的 User 模型,其值引用一个自定义的模型。...# AUTH_USER_MODEL 这个属性是 django 内置的,会主动到这个文件中查找这个属性, # 如果找到了,那么就会使用这个属性指定的模型来作为 User 对象 # AUTH_USER_MODEL...这个属性是一个字符串,规则是 “appname.Modelname” # app 下的哪个模型 # 如果设置了 AUTH_USER_MODEL,那么项目的 makemigrations 以及 migrate...命令 # 必须要在设置完这些东西后再执行 AUTH_USER_MODEL = 'User' ?

    93220

    15.Django基础十一之认证系统

    设置Proxy模型: 作用: 给模型增加操作方法 局限: 不能增加或减少User模型的字段 好处: 不破坏原来的User模型的表结构 如果你对Django提供的字段,以及验证的方法都比较满意,没有什么需要改的...# settings.py AUTH_USER_MODEL = 'youappname.User' 如何使用这个自定义的模型:比如以后我们有一个Article模型,需要通过外键引用这个User模型...若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ' (这个值可以在settings文件中通过LOGIN_URL进行修改)。...若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ' 并传递当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。     ...写法如下: # 引用Django自带的User表,继承使用时需要设置,这样django就知道从我们的app名的应用下的models文件中去查找UserInfo这张表了 AUTH_USER_MODEL =

    2.2K20

    Django认证系统并不鸡肋反而很重要

    安装 Django默认已安装,可以在settings.py中的INSTALLED_APPS看到: django.contrib.auth:认证系统内核,以及默认models等。...models.User User模型Django认证系统的核心,它的主要属性包括: id username email password is_active is_superuser last_login...比如有个app叫做foo,它有个model叫做Bar,可以使用has_perm()函数来检查权限: add:user.has_perm('foo.add_bar') change:user.has_perm...它的处理是这样的: 如果用户没有登录,就重定向到settings.LOGIN_URL(默认值/accounts/login/),同时把当前的绝对路径添加到查询字符串中,如:/accounts/login...如果修改了密码,数据库中的密码改变了,而session中的密码没有更新,那么密码就会匹配不上,导致session失效。

    1.1K10

    【云+社区年度征文】Django认证系统并不鸡肋反而很重要

    安装 Django默认已安装,可以在settings.py中的INSTALLED_APPS看到: django.contrib.auth:认证系统内核,以及默认models等。...models.User User模型Django认证系统的核心,它的主要属性包括: id username email password is_active is_superuser last_login...比如有个app叫做foo,它有个model叫做Bar,可以使用has_perm()函数来检查权限: add:user.has_perm('foo.add_bar') change:user.has_perm...它的处理是这样的: 如果用户没有登录,就重定向到settings.LOGIN_URL(默认值/accounts/login/),同时把当前的绝对路径添加到查询字符串中,如:/accounts/login...如果修改了密码,数据库中的密码改变了,而session中的密码没有更新,那么密码就会匹配不上,导致session失效。

    1.6K70

    py3.6+xadmin的自学网站搭建

    狸猫换太子 算了还是叫太子换狸猫吧,admin文档太少用起来还不如自己写的后台管理,用xadmin更换django自带的admin,安装xadmin的过程与写一个app分支的过程一致。...所以我们需要重写user模型。...第一步,修改settings.py配置文件,覆盖默认的user模型AUTH_USER_MODEL = "users.UserInfo" 重写model 衍生的model是继承了AbstractUser...的,所以在写的过程中不要写与父类重复的字段(尤其是登陆字段)如果写重复了会导致在哪登陆都无法登陆的情况。...关于登陆,django自己有一个后台的登陆系统,并且xadmin的登陆是它自己做的,你没有进行配置,我们登陆可以使用这个模块: login视图 避免auth的login方法与我们定义的视图函数名称重复

    1.1K100

    django-Auth模块(详细介绍)

    该用户即使没有登录,使用该函数也不会报错。...若用户没有登录,则会跳转到django默认的 登录URL '/accounts/login/ ' 并传递当前访问url的绝对路径 (登陆成功后,会重定向到该路径)。...用法: from django.contrib.auth.models import User user = User.objects.create_user(username='用户名',password...聪明的你可能会想到新建另外一张表然后通过一对一和内置的auth_user表关联,这样虽然能满足要求但是有没有更好的实现方式呢? 答案是当然有了。...写法如下: # 引用Django自带的User表,继承使用时需要设置 AUTH_USER_MODEL = "app名.UserInfo" 再次注意: 一旦我们指定了新的认证系统所使用的表,我们就需要重新在数据库中创建该表

    1.2K20
    领券