部署后在django应用程序中加载静态文件时遇到问题。
我知道我应该将static_root设置为要创建静态文件夹的路径,然后运行python manage.py collectstatic(不确定是否已经有一个静态文件夹,是否必须这样做)。 / p>
这是我的项目的结构
gradboost
-->__pycache__
-->classroom
__init__.py
apps.py
decorators.py
forms.py
models.py
urls.py
------>templates
------>templatetags
-->django_school
__pycache__
__init__.py
settings.py
urls.py
wsgi.py
-->public
-->static
-->templates
-->tmp
manage.py
passenger_wsgi.py
public_html
这是我目前在settings.py上所拥有的
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.0/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = '/gradboost/public/static'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
运行collectstatic返回此错误消息
PermissionError:[Errno 13]权限被拒绝:'/ gradientboostmvp'
这是我打印设置时得到的。 dict
{'_wrapped': <Settings "django_school.settings">, 'INSTALLED_APPS': ['django.contrib.auth','django.contrib.admin', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'crispy_forms', 'classroom'], 'LOGGING_CONFIG': 'logging.config.dictConfig', 'LOGGING': {}, 'FORCE_SCRIPT_NAME': None, 'DEBUG': False, 'DEFAULT_TABLESPACE': '', 'DATABASES': {'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/home/thegqvow/gradboost/db.sqlite3', 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'OPTIONS': {}, 'TIME_ZONE': None, 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}, 'ABSOLUTE_URL_OVERRIDES': {}, 'USE_I18N': True, 'LANGUAGE_CODE': 'en-us', 'LOCALE_PATHS': [], 'DEFAULT_INDEX_TABLESPACE': '', 'AUTH_USER_MODEL': 'classroom.User', 'SECRET_KEY': '**'}
答案 0 :(得分:0)
您的静态根目录配置错误-我通常使用BASE_DIR
# Should contain /path/to/gradboost
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
STATIC_ROOT = os.path.join(self.BASE_DIR, 'static')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'public/static'),
]
我更改了STATIC_ROOT和其他静态文件夹,这样看起来更合乎逻辑。