在我的项目中,我有一个带有不同路由器类的routers.py。现在,我正在制作一个新的应用程序。我创建了models.py。我还在settings.py中的INSTALLED_APPS中注册了该应用程序。然后,我运行验证。一切都好。当我同步nat时,Django没有安装表。我尝试使用
python manage.py sqlall <app_name> | psql <database>
然后,我收到一条错误消息:
psql: FATAL: password authentication failed for user <user name>
我注意到postgres中不存在该角色。所以,我创建了具有登录权限createdb和密码的角色。然后,我收到一条不同的错误消息:
psql: FATAL: password authentication failed for user <user name>
close failed in file object destructor:
Error in sys.excepthook:
Original exception was:
并且,它不提供原始例外。
非常感谢任何帮助。
答案 0 :(得分:0)
看起来Django应用程序无法登录数据库。
在django的settings.py
中,确保您拥有正确的数据库凭据设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'HOST': get_env_variable("DJANGO_DB_HOST"),
'NAME': get_env_variable("DJANGO_DB_NAME"),
'USER': get_env_variable("DJANGO_DB_USER"),
'PASSWORD': get_env_variable("DJANGO_DB_PWD"),
'PORT': '',
},
...
}
正如您所看到的,我的凭据是从环境变量中获取的。您可以将它们硬编码以用于测试目的。
然后在DB(我的是postgresql)中创建用户/授予它正确的权限,例如:
ssh root@dbhost
su - postgres
createdb dbname
psql
GRANT ALL PRIVILEGES ON DATABASE dbname TO dbuser
应该这样做。 如果您的设置中缺少这些步骤,我建议您执行以下步骤:
在您的应用admin.py
中使用Django的管理员注册您的模型:
# Register your models here.
admin.site.register(Model1)
...
admin.site.register(ModelN)
然后,假设您已经创建了项目,请运行:
python manage.py migrate
(这是syncdb的等价物。阅读有关migrations的文档)。 如果该命令没有要求管理超级用户,则使用以下命令创建管理用户(即可以通过django的管理界面操作模型的用户):
python manage.py createsuperuser
点亮Django
python manage.py runserver 0.0.0.0:8000
看看您在
访问您的网站和管理员时会发生什么localhost:8000/
localhost:8000/admin
如果你已经了解所有这些事情,请原谅我。这就是我在开发环境中通常做的事情(我当然也使用virtualenv)。