迁移到不同目录后,Django应用程序无法正常工作

时间:2018-06-06 02:53:40

标签: django

我有一个Django 2.0项目,结构如下,工作正常

app_dir
 |- myapp
    |- settings
       |- __init__.py
       |- local.py
       |- production.py
    |- __init__.py
    |- wsgi.py
    |- urls.py
 |- other_app
    |- templates
       |- other_app
          |- index.html
    |- models.py
    |- views.py
    |- urls.py
 |- manage.py
 |- static_resources # directory just to keep core files which are not used in application
 |- .gitignore
 |- .dockerignore
 |- Dockerfile
 |- docker-compose.yml
 |- Pipfile
 |- Pipfile.lock
 |- Procfile
 |- requirements.txt
 |- start.sh
 |- db.sqlite3

正如您所见,Django应用程序和其他未在应用程序中直接使用的文件都处于同一级别。

所以,我想将Django applications移到src目录,使其与其他无用或自动创建的文件分开。

我的新目录结构如

app_dir
 |- src
    |- myapp
       |- settings
          |- __init__.py
          |- local.py
          |- production.py
       |- __init__.py
       |- wsgi.py
       |- urls.py
    |- other_app
       |- templates
          |- other_app
             |- index.html
       |- models .py
       |- views.py
       |- urls.py
    |- manage.py
 |- static_resources # directory just to keep core files which are not used in application
 |- .gitignore
 |- .dockerignore
 |- Dockerfile
 |- docker-compose.yml
 |- Pipfile
 |- Pipfile.lock
 |- Procfile
 |- requirements.txt
 |- start.sh
 |- db.sqlite3

但现在没有检测到已安装或创建的其他应用程序。

这是我之前工作的settings/local.py

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',

    #####################
    # created apps
    #####################
    'other_app',

    ####################
    # installed apps
    ####################
    'allauth',
    'allauth.account',
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'koober.wsgi.application'

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static_my_project')
]

STATIC_ROOT = os.path.join(BASE_DIR, 'static_cdn', 'static_root')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'static_cdn', 'media_root')

并给出错误

enter image description here

socialaccount是安装了allauth的template_tag

我认为将src.附加到所有导入可能会有效,但由于已经创建了许多应用程序,因此向每个导入添加src.非常困难。

有没有其他方法可以使用新的目录结构运行应用程序而不向所有导入添加src.? (如果需要,可以更改目录结构

1 个答案:

答案 0 :(得分:0)

您是否尝试添加' allauth.socialaccount'到INSTALLED_APPS? Allauth项目的github上的示例设置包括这一点。 github-allauth