【问题标题】:Django: Static files missing when rendering templateDjango:渲染模板时缺少静态文件
【发布时间】:2013-05-13 12:42:30
【问题描述】:

我正在使用 django 1.3 并尝试在我的开发机器(ubuntu 12.04)上部署一个 django 项目(客户端发送)。问题在于静态文件。我的目录结构如下:

project_name
    media
    static
        css
        img
        js
    settings.py

这是我的 settings.py:

ROOT = '/home/user/project_name'

MEDIA_ROOT = '%s/media/' % ROOT
MEDIA_URL = '/media/'
STATIC_ROOT = '%s/static/' % ROOT
STATIC_URL = '/static/'
STATICFILES_DIRS = ()

我的网站已完美部署,但缺少 css、js 和 imgs。管理界面也是如此。当我使用链接 http://mysite.com/static/js/some.js 时,它会给出 404。

我们将不胜感激,并且为答案投票是惯例。

【问题讨论】:

    标签: django http-status-code-404 static-files django-1.3


    【解决方案1】:

    还有一点题外话..
    使用会更好:
    MEDIA_ROOT = os.path.join(os.path.dirname(file),'media').replace('\','/')
    STATIC_ROOT = os.path.join(os.path.dirname(file),'static').replace('\','/')

    在开发时的主要 urls.py 中,仅限 django 网络服务器:
    urlpatterns = 模式('', (r'^media/(?P.*)','django.views.static.serve',{'document_root': os.path.join(os.path.dirname(file) ,'媒体').replace('\','/') }),
    (r'^static/(?P.*)','django.views.static.serve',{'document_root': os.path.join(os.path.dirname(file) ,'static').replace('\','/')}),

    这样,你 dont need collectstatic, ull 在生产服务器上需要它,你将使用 nginx 或其他东西来为你的静态服务器提供服务

    【讨论】:

      【解决方案2】:

      您没有提到配置您的网络服务器以实际提供静态文件。您需要将其指向 collectstatic 放入的目录。

      【讨论】:

      • 你的意思是在主要的 urls.py 中?请解释你的答案
      • 不,不在 urls.py 中,因为正如文档明确解释的那样,Django not 在生产中为您的静态文件提供服务。这就是为什么我说你需要配置你的网络服务器来做到这一点。同样,如果您已经阅读了足够多的文档以知道您需要运行静态文件,则会在完全相同的位置进行说明。
      【解决方案3】:

      你运行python manage.py collectstatic 了吗?见here

      请注意,在生产环境中,您应该将静态文件放在静态服务器中。指南中应该有一些内容。

      【讨论】:

      • 很遗憾我做了但没有成功:(
      • 如果你设置STATIC_ROOT = 'static/'会怎么样?
      • 静态根只用于生产,你不应该那样匹配它
      【解决方案4】:

      我认为你需要运行./manage.py collectstatic :)

      【讨论】:

      • 很遗憾我做了但没有成功:(
      • 你的 STATICFILES_FINDERS 中有 'django.contrib.staticfiles.finders.AppDirectoriesFinder' 吗?
      • 是的,我在 settings.py 中有 STATICFILES_FINDERS 及其默认行为
      猜你喜欢
      • 2014-03-06
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 2021-02-01
      • 2014-02-13
      • 2018-02-26
      • 2012-10-27
      • 2018-01-17
      相关资源
      最近更新 更多