具有 webpack 和 reactjs 项目结构的 django runserver

django runserver with webpack and reactjs project structure

我正在尝试配置 Djangowebpackreactjs

的技术栈

这是我的项目结构:

现在我在 运行 python manage.py runserver :

时收到此错误

ImportError: No module named cherngloong.settings

回溯:

    Traceback (most recent call last):
      File "manage.py", line 10, in <module>
        execute_from_command_line(sys.argv)
      File "/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/django/core/management/__init__.py", line 351, in execute_from_command_line
        utility.execute()
      File "/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/django/core/management/__init__.py", line 303, in execute
        settings.INSTALLED_APPS
      File "/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in __getattr__
        self._setup(name)
      File "/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/django/conf/__init__.py", line 44, in _setup
        self._wrapped = Settings(settings_module)
      File "/Users/bli1/Development/Django/CL/cherngloong/cherngloong/lib/python2.7/site-packages/django/conf/__init__.py", line 92, in __init__
        mod = importlib.import_module(self.SETTINGS_MODULE)
      File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
        __import__(name)
    ImportError: No module named cherngloong.settings

这是由于 settings.py 在不同的位置造成的。

我想保留项目的这个结构,因为我想 app 目录处理前端,我希望 server 目录处理后端。我怎样才能保持这个结构,同时又能够 运行 runserver 命令?

我查看了 manage.py 并发现了这个:

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "cherngloong.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

看来我需要改变cherngloong.settings。我试图将其更改为 server.cherngloong.settings 但我得到了同样的错误:

ImportError: No module named server.cherngloong.settings

您正试图像访问模块一样访问设置。为了使它工作,Python 必须将 serverchernloong 目录都解释为包含包的目录。

为此,您必须在两个目录中创建一个 __init__.py 文件。该文件可以为空。 What's __init__.py and what is it for?