【问题标题】:Connecting to Mongodb from Django application hosted on heroku从 Heroku 上托管的 Django 应用程序连接到 Mongodb
【发布时间】:2021-02-10 14:42:09
【问题描述】:

我正在尝试将托管在 heroku 上的 djnago 应用程序连接到 mongodb atlas。 我还将 heroku 设置上的 DATABASE_URL 更改为:

mongodb+srv://<name>:<password>@cluster0.wtnph.mongodb.net/test

我正在使用 python 3.9 和 django 3.0.5 但是当部署到heroku时,我得到了错误。

> -----> Python app detected
-----> No change in requirements detected, installing from cache
-----> Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2
-----> Installing SQLite3
-----> Installing requirements with pip
-----> $ python manage.py collectstatic --noinput
       Traceback (most recent call last):
         File "manage.py", line 22, in <module>
           main()
         File "manage.py", line 18, in main
           execute_from_command_line(sys.argv)
         File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
           utility.execute()
         File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 345, in execute
           settings.INSTALLED_APPS
         File "/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 76, in __getattr__
           self._setup(name)
         File "/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 63, in _setup
           self._wrapped = Settings(settings_module)
         File "/app/.heroku/python/lib/python3.6/site-packages/django/conf/__init__.py", line 142, in __init__
           mod = importlib.import_module(self.SETTINGS_MODULE)
         File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
           return _bootstrap._gcd_import(name[level:], package, level)
         File "<frozen importlib._bootstrap>", line 994, in _gcd_import
         File "<frozen importlib._bootstrap>", line 971, in _find_and_load
         File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
         File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
         File "<frozen importlib._bootstrap_external>", line 678, in exec_module
         File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
         File "/tmp/build_91bba5c0/kibo_skill_matrix_api/settings.py", line 176, in <module>
           django_heroku.settings(locals())
         File "/app/.heroku/python/lib/python3.6/site-packages/django_heroku/core.py", line 69, in settings
           config['DATABASES']['default'] = dj_database_url.config(conn_max_age=MAX_CONN_AGE, ssl_require=True)
         File "/app/.heroku/python/lib/python3.6/site-packages/dj_database_url.py", line 55, in config
           config = parse(s, engine, conn_max_age, ssl_require)
         File "/app/.heroku/python/lib/python3.6/site-packages/dj_database_url.py", line 103, in parse
           engine = SCHEMES[url.scheme] if engine is None else engine
       KeyError: 'mongodb+srv'
       If you suspect this is an IPython 7.16.1 bug, please report it at:
           https://github.com/ipython/ipython/issues
       or send an email to the mailing list at ipython-dev@python.org
  

我什至尝试从 Settings.py 中删除 DATABASE dict

【问题讨论】:

    标签: python django heroku pymongo


    【解决方案1】:

    我可以通过更改 settings.py 中的这一行来解决问题

    发件人:

    # Activate Django-Heroku.
    django_heroku.settings(locals()),
    

    收件人:

    # Activate Django-Heroku.
    django_heroku.settings(locals(), databases=False),
    

    【讨论】:

      猜你喜欢
      • 2019-02-19
      • 1970-01-01
      • 2012-03-29
      • 2021-12-27
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多