#django #mongodb #google-cloud-platform
#django #mongodb #google-облачная платформа
Вопрос:
Я развернул приложение Django в облачной платформе Google. Я использую MongoDB atlas для хранения пользовательских данных. Я могу успешно зарегистрироваться и войти в систему, запустив его на localhost. Но когда я пытаюсь зарегистрироваться / войти в систему непосредственно с URL-адреса приложения, это выдает ошибку базы данных. В settings.py файл, я дал строку подключения к базе данных MongoDB. Как я смогу получить доступ к данным, хранящимся в MongoDB, через приложение, развернутое в GCP?
Для развертывания используются ресурсы App Engine и Cloud SDK.
Подключение к базе данных в settings.py файл выглядит следующим образом:
DATABASES = {
'default': {
'ENGINE': 'djongo',
'CLIENT': {
'name' : 'Example',
'host':'mongodb srv://username:password@[host]?retryWrites=trueamp;w=majority',
'username': 'username',
'password': 'password',
'authMechanism': 'SCRAM-SHA-1',
},
}
}
Ошибка заключается в следующем:
DatabaseError at /login
No exception message supplied
Request Method: POST
Request URL: https://[PROJECT-ID].ew.r.appspot.com/login
Django Version: 3.0.5
Exception Type: DatabaseError
Exception Location: /env/lib/python3.7/site-packages/djongo/cursor.py in execute, line 59
Python Executable: /env/bin/python3.7
Python Version: 3.7.9
Python Path:
['/srv',
'/env/bin',
'/opt/python3.7/lib/python37.zip',
'/opt/python3.7/lib/python3.7',
'/opt/python3.7/lib/python3.7/lib-dynload',
'/env/lib/python3.7/site-packages']
Server time: Tue, 17 Nov 2020 12:48:36 0000
The above exception ( Keyword: None Sub SQL: None FAILED SQL: ('INSERT INTO "django_session" ("session_key", "session_data", "expire_date") VALUES (%(0)s, %(1)s, %(2)s)',) Params: (('[REDACTED_SESSION_KEY]', '[REDACTED_SESSION_DATA]', datetime.datetime(2020, 12, 1, 12, 48, 35, 677384)),) Version: 1.3.3) was the direct cause of the following exception:
/env/lib/python3.7/site-packages/django/db/backends/utils.py in _execute
return self.cursor.execute(sql, params) …
▼ Local vars
Variable Value
ignored_wrapper_args
(False,
{'connection': <djongo.base.DatabaseWrapper object at 0x3e8871fc0790>,
'cursor': <django.db.backends.utils.CursorDebugWrapper object at 0x3e8871afa790>})
params
('[REDACTED_SESSION_KEY]',
'[REDACTED_SESSION_DATA]',
datetime.datetime(2020, 12, 1, 12, 48, 35, 677384))
self
<django.db.backends.utils.CursorDebugWrapper object at 0x3e8871afa790>
sql
('INSERT INTO "django_session" ("session_key", "session_data", "expire_date") '
'VALUES (%s, %s, %s)')
Variable Value
db_exe
DatabaseError()
params
('[REDACTED_SESSION_KEY]',
'[REDACTED_SESSION_DATA]',
datetime.datetime(2020, 12, 1, 12, 48, 35, 677384))
self
<djongo.cursor.Cursor object at 0x3e8871afad90>
sql
('INSERT INTO "django_session" ("session_key", "session_data", "expire_date") '
'VALUES (%s, %s, %s)')
Комментарии:
1. Помните, что никогда не следует публиковать разумные данные, такие как ключи, пароли, токены и т. Д. А также личная идентифицируемая информация (если вы этого не хотите, и это обязательная информация), поскольку это может представлять угрозу безопасности для вашего приложения. Это руководство сообщества проливает свет на то, что такое соединение, по крайней мере, возможно с использованием NodeJS и App Engine Flexible, и поэтому я считаю, что это может быть возможно с Djando на App Engine Flexible. Вы следили за каким-либо сообщением или не могли бы вы предоставить пример приложения для попытки воспроизведения?
2. Спасибо, Даниэль. я позабочусь об этом в следующий раз. Я следил за Google cloud docs для развертывания в стандартной среде App Engine. Но как app engine flexible, так и app engine standard использовали базу данных sql, поскольку они не предоставляли информацию о mongodb.