首页 > 解决方案 > Django 静态文件无法加载到谷歌计算引擎上

问题描述

我已经在我的计算机(Windows 10)上运行了 python manage.py runserver 命令并且它可以工作但是当我将所有代码放在谷歌云平台计算引擎(Ubuntu 16)上并运行相同的命令时,它会显示所有静态文件没有找到。有谁知道如何解决它?

settings.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.abspath(__file__)))

ALLOWED_HOSTS = ['*']


# Application definition

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

    'restaurants',  # 餐廳APP
    'webpack_loader',  # 整合vue和django套件
    'corsheaders'  # 處理跨域請求套件

    # 'gunicorn',  # 部署用
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
   'django.middleware.clickjacking.XFrameOptionsMiddleware',
]


ROOT_URLCONF = 'foodies.urls'

TEMPLATES = [
{
    'BACKEND': 
    'django.template.backends.django.DjangoTemplates',
     'DIRS': [os.path.join(BASE_DIR, '../static')],
    '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 = 'foodies.wsgi.application'

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

 STATICFILES_DIRS = (
    os.path.join(BASE_DIR, '../frontend/dist'),
)

WEBPACK_LOADER = {
    'DEFAULT': {
    'BUNDLE_DIR_NAME': '',
    'STATS_FILE': os.path.join(BASE_DIR, '../webpack- 
   stats.json'),
    }
}


CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
# 允許所有header請求
CORS_ALLOW_HEADERS = ('*')

静态文件路径 在此处输入图像描述

索引.html 在此处输入图像描述

网址.py

from django.contrib import admin
from django.urls import path, include
from rest_framework_swagger.views import get_swagger_view
from django.views.generic import TemplateView


schema_view = get_swagger_view(title='Pastebin API')

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('restaurants.urls')),
    path('api-auth/', include('rest_framework.urls')),
    path('api-view/', schema_view),
    path('', TemplateView.as_view(
        template_name="index.html"), name='index')
]

铬错误消息 在此处输入图像描述

计算引擎状态 在此处输入图像描述

标签: pythondjangogoogle-cloud-platformgoogle-compute-enginedjango-staticfiles

解决方案


我建议阅读以下内容: https ://docs.djangoproject.com/en/2.1/howto/static-files/deployment/

它对静态文件的预期部署有具体而准确的说明。


推荐阅读