【问题标题】:Static file management in Django1.4Django1.4中的静态文件管理
【发布时间】:2012-08-15 13:58:44
【问题描述】:

几天来我一直对 Django 中的静态文件感到困惑。我找到了一种效果很好的解决方案。但是当我设置 DEBUG=False 时它崩溃了。所以我建立了一个新项目并做一些测试以获得更清晰的外观。 首先,我使用默认设置创建一个项目。然后我将设置文件的一些行更改为:

STATIC_ROOT = '%s/site_media' % PROJECT_DIR
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(STATIC_ROOT, 'images'),
)

之后,我将“hi.jpg”放在“project_dir/images/hi.jpg”中。我调用 runserver 并访问“http://127.0.0.1:8000/static/images/hi.jpg”。它不起作用。有什么问题?

【问题讨论】:

    标签: django static-files django-staticfiles django-1.4


    【解决方案1】:

    settings.py

    PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
    
    MEDIA_ROOT = os.path.join(PROJECT_DIR, 'site_media')
    MEDIA_URL = '/site_media/'
    STATIC_URL = '/static/'
    
    if DEBUG:
        STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
    else:
        STATICFILES_DIRS = (
            os.path.join(PROJECT_DIR, 'static'),
        )
    

    urls.py

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

    :)

    Django: Migrating from MEDIA_URL to STATIC_URL

    【讨论】:

      【解决方案2】:

      它是这样工作的:当DEBUG=True 时,Django 自己提供静态文件。当DEBUG=False 时,Django 将不再这样做,您需要配置您的 Web 服务器来执行此操作(例如 Apache)。

      Django 在django.contrib.staticfiles 中有一个机制(参见Managing static filesThe staticfiles app)。这基本上意味着您需要运行collectstaticmanagement 命令,该命令将在您的Django 项目中搜索/static/ 目录中的所有静态文件,并将它们放在一个目录中(STATIC_ROOT)。完成后,您的 Web 服务器可以提供该目录中的静态文件。

      如果在运行collectstatic 后无法找到一个或多个静态文件,则表示您配置错误。

      【讨论】:

      • 我弄错了:我应该访问127.0.0.1:8000/static/hi.jpg,不带前缀'image',因为 STATICFILES_DIRS = (os.path.join(STATIC_ROOT, 'images'),) 不是 (os.path.join( STATIC_ROOT, ''),)
      • 如果我设置 DEBUG=False 并进行本地开发,是否可以?因为我使用 celery,如果 DEBUG=True 会引发警告
      • @user1606453:你可以,但是你的本地网络服务器也需要配置为提供静态文件。
      猜你喜欢
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      • 2021-01-06
      • 2014-10-31
      • 2012-02-03
      • 2012-04-15
      • 1970-01-01
      • 2014-12-10
      相关资源
      最近更新 更多