嗯,我的 django 项目中有多个数据库。一是default,二是test_dev。我已经创建了 docker 容器。然后一切都很顺利,直到构建容器。之后,当我尝试调用我的 django 应用程序 api 时,它正在使用test_devdb 来读取数据。我遇到过:
OperationalError at /api/projects/
(1045, "Access denied for user 'test_dev'@'xxx.xxx.xxx.xxx' (using password: YES)")
Run Code Online (Sandbox Code Playgroud)
在设置文件中,我的数据库配置:
{
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': Path(__file__).resolve().parent.parent / 'db.sqlite3',
},
"test_dev" : {
'ENGINE': 'django.db.backends.mysql',
'NAME': "test",
'USER': 'test_dev',
'PASSWORD': 'db_password',
'HOST': '?=hosted_domain',
'PORT': '3306',
'SSL': True
}
}
Run Code Online (Sandbox Code Playgroud)
如果您知道任何解决方案。请帮助我摆脱这个困境。很快我就必须把东西投入生产了..
我正在尝试为我的项目编写测试用例。现在的问题是,我不知道如何在标头中传递自定义关键字参数。下面是我的测试用例类。
class ProjectTestClass(APITestCase,URLPatternsTestCase):
allow_database_queries: True
def projects_notifications_list(self,token,project_key):
url = reverse('projects:project_noti_list',kwargs={"category": "all"})
response = self.client.get(
url,
format='json',
HTTP_AUTHORIZATION="JWT "+token,
headers={"platform-subscriber-id":project_key}
)
print("data -> ",response.data)
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(len(response.data), 3)
Run Code Online (Sandbox Code Playgroud)
如您所见,我在标头中传递了 plaform-subsciber-id 。但收到错误 {'message': '标题中需要平台订阅者 id'}。看来 id 没有在标头中正确配置。有人知道这个吗?
python django django-models django-testing django-rest-framework