我正在用Django Rest Framework和AngularJs构建一个应用程序。我使用Django-rest-auth来进行身份验证,尽管我还没有设置它。无论如何,我正在尝试用我的项目设置这个app。我意识到我需要安装django-rest-auth-registration来运行它,所以我按照这个documentation做了以下事情:
我运行了命令
pip安装django-rest-auth
和
pip安装django-allauth
我的任何设置。py看起来像这样:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 3rd party apps
'rest_framework',
'rest_framework.authtoken',
'rest_auth',
'allauth',
'allauth.account',
'rest_auth.registration',
# My app
'myapp',
]
我还添加了身份验证后端、context_processors和适当的url。
但是,当我尝试迁移时,我的终端抛出以下错误:
运行时错误:模型类django.contrib.sites.models.site没有声明一个显式的app_label,也不在INSTALLED_APPS的应用程序中。
为什么我会遇到这个错误,我如何解决它来迁移我的项目?谢谢!
8条答案
按热度按时间balp4ylt1#
"修复“
只需将Django的Sites framework添加到您的应用中,并在设置中将SITE_ID设置为1。
"为什么会这样“
Django's Sites Framework是一个与核心库捆绑在一起的贡献模块,它允许在不同的站点(可以使用不同的数据库,视图中的逻辑等)使用单个Django应用程序/代码库。SITE_ID设置,如文档中所述,“* 用于使应用程序数据可以挂钩到特定的站点,并且单个数据库可以管理多个站点的内容 *”
在这个特殊的例子中,为了正常工作,AllAuth requires the Sites Framework。许多其他的第三方库被建立来安全地处理可能存在多个站点的情况,这样可能是最好的。
u5i3ibmn2#
我通过Google搜索找到了这篇文章。我的问题是运行测试时出错了:
这是在Python 2.7.x上运行的绝对导入。正如Colton Hicks在下面的注解中提到的,这也可以在Python 3上发生(pytest 3.2.3和Django 1.11.4)。
在我的
tests.py
中:将相对导入更改为绝对导入后,问题消失了:
高温
41zrol4v3#
尝试在models Meta类中添加
app_label = 'yourApp'
:k2arahey4#
我得到了上面的错误。然而我的问题是在urls.py。我是按照PyDanny cookiecutter django食谱。我的错误是在urls.py这一行:
当我更正为:
一切都很好。我还更改了我的本地应用程序(我先这么做了,所以关键错误是URL配置错误):
ogq8wdun5#
只需将
'django.contrib.sites',
添加到INSTALLED_APPS
,并在settings.py
文件中设置SITE_ID = 1
。eoxn13cs6#
我已经安装了django调试工具栏,这实际上是导致/my问题的原因。INSTALLED_APPS(在www.example.com中settings.py)需要条目“django.contrib. sessions”。请确保在添加后运行migrate。
kq4fsx7k7#
Django的升级答案〉=4.0 // 2022
将Django的Sites框架和FlatPages框架添加到INSTALLED_APPS中,并在设置中设置SITE_ID。
k4emjkb18#
进行迁移后,一切都按预期运行
pythonmanage.py迁移
祝你好运