【问题标题】:Not serving staticfiles default behavior when running `gunicorn_django`?运行`gunicorn_django`时不提供静态文件默认行为?
【发布时间】:2012-08-13 19:23:27
【问题描述】:

myproject_django$ gunicorn_django 为我的站点提供服务,静态文件除外。任何想法为什么?我正在使用 django 1.3 从虚拟环境中运行它。

项目树

myproject_django
├── core
│   ├── admin.py
│   ├── __init__.py
│   ├── models.py
│   ├── tests.py
│   ├── views.py
├── __init__.py
├── manage.py
├── settings.py
├── static
│   ├── css
│   │   ├── base.css
│   │   ├── layout.css
│   │   └── skeleton.css
│   └── media
│       ├── pek.ico
│       ├── pek.png
│       └── pek_symbol.png
├── templates
│   └── core
│       ├── 404.html
│       ├── 500.html
│       ├── home.html
│       └── install.html
├── urls.py

settings.py 的潜在相关部分

PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))

MEDIA_ROOT = ''

MEDIA_URL = '/static/media'

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

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(PROJECT_PATH, 'static'),
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'core',
    'gunicorn',
    'django.contrib.admin',
)

【问题讨论】:

    标签: python django gunicorn static-files


    【解决方案1】:

    您可能想要配置 nginx 或 apache 来处理静态文件。现在尝试运行 python manage.py collectstatic 并将以下代码添加到 urls.py

    urls.py

    if settings.DEBUG:
        urlpatterns += patterns('',
                (r'^static/media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes':True}),
            )
        urlpatterns += patterns('',
                     (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT, 'show_indexes':True}),
                )
    

    【讨论】:

    • 当我运行 $ python manage.py collectstatic 时,我收到此错误:django.core.exceptions.ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting。然后我在settings.py 中设置STATIC_ROOT = PROJECT_PATH。然后它没有给出任何错误但是在运行$ gunicorn_django时我仍然看不到静态文件。
    • 创建一个名为project_static的目录并更新STATICFILES_DIRS = ( os.path.join(PROJECT_PATH, 'project_static'), )
    • 所以我在myproject_django 中创建了project_static。然后我将cssmedia 目录放在project_static 中(基本上将我的static 目录重命名为project_static)。然后我在settings.py 中实现了STATICFILES_DIRS = ( os.path.join(PROJECT_PATH, 'project_static'), )(在STATIC_ROOT = PROJECT_PATH 旁边)。然后我又跑了python manage.py collectstatic,然后又跑了gunicorn_django。我仍然没有看到显示的静态文件。
    • 您是否将urls.py 更改为我上面所说的并将DEBUG=True 设置为settings.py
    • 我忘记将DEBUG 更改为True。现在它可以正确地为我的 CSS 服务了!耶!但仍然不是我的图像。如果这是仅使用 gunicorn 提供静态文件的唯一方法(需要将 DEBUG 更改为 true),这基本上意味着我不应该在生产环境中使用此设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 2016-01-28
    • 2012-06-15
    • 2015-05-17
    相关资源
    最近更新 更多