【问题标题】:Django 1.3 static files placed in application dirs放置在应用程序目录中的 Django 1.3 静态文件
【发布时间】:2011-04-07 12:18:48
【问题描述】:

我使用的是 Django 1.3,应用程序中的静态文件令人困惑。 我在做什么: 1) 设置

STATIC_ROOT = as path to directory 'static' in my project
STATIC_URL = '/static/'

2) 在我的 urls.py 中提供服务

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

3) 将 css 和 js 文件放入我的应用程序目录中的“static”文件夹中。 所以我得到了这样的目录树:

my_project/
    main_app/
        static/
            css/
                style.css
            js/
    secondary_app/
        static/
            foldername/
                file.css

4) 我将这两个应用程序都添加到了 settings.py 文件中的 INSTALLED_APPS 中。 现在在我的模板中,当我写以下行时:

<link rel="stylesheet" href="{{ STATIC_URL }}css/style.css" type="text/css" />

Django 成功在目录中找到我的 css 文件

my_project/main_app/static/css/

并插入 style.css 但是当我写

<link rel="stylesheet" href="{{ STATIC_URL }}foldername/file.css" type="text/css" />

Django 没有插入这个文件。

所以我的问题是:我做错了什么?为什么我不能从 secondary_app 目录插入我的 css 文件? 关于这种情况,我还有什么要告诉你的?

【问题讨论】:

  • 您有两个名为“static”的目录。 STATIC_ROOT又指向哪一个?
  • 在官方网站的文档中,我读到开发人员能够将静态文件放入应用程序的“static/”子目录中。我错了吗? link
  • 顺便说一下,如果我将包含我的 css 文件的 secondary_app/static/foldername/ 重命名为 secondary_app/static/css/ Django 会成功插入 css 文件。我不知道为什么...有人可以解释一下吗?

标签: django


【解决方案1】:

其背后的想法是,您可以在 app/static 下使用自己的静态文件发布所有应用。

在项目中部署应用程序后,运行python manage.py collectstatic 将复制由于STATICFILES_FINDERS 设置找到的所有静态文件(其中包含一个查找器,默认情况下在每个已安装的应用程序中查找static 目录)在您的@ 987654327@ 目录然后将通过STATIC_URL 提供服务

开发服务器在DEBUG 模式下处理STATIC_URL 模式,但这是一个有趣的阅读:Serving static files in production

【讨论】:

  • 您的意思是每次我们将静态文件添加到开发环境中时,我们都必须运行一个 collectstatic ?
  • @Glide:不。如果您有 collectstatic 发生但不想要它:删除 Apache 别名并将 staticfiles_urlpatterns 添加到您的网址并打开调试。 docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/…(在底部)。
猜你喜欢
  • 2017-07-04
  • 2011-09-18
  • 1970-01-01
  • 2016-10-19
  • 2017-01-25
  • 1970-01-01
  • 2014-11-27
  • 2014-05-05
  • 2015-02-05
相关资源
最近更新 更多