Django 1.3静态文件放在应用程序目录中

ton*_*ony 9 django

我正在使用Django 1.3并且应用程序中的静态文件令人困惑.我在做什么:1)设置

STATIC_ROOT = as path to directory 'static' in my project
STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)

2)在我的urls.py服务

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

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

my_project/
    main_app/
        static/
            css/
                style.css
            js/
    secondary_app/
        static/
            foldername/
                file.css
Run Code Online (Sandbox Code Playgroud)

4)我将这两个应用程序添加到settings.py文件中的INSTALLED_APPS.现在在我的模板中写下跟随行:

<link rel="stylesheet" href="{{ STATIC_URL }}css/style.css" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

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

my_project/main_app/static/css/
Run Code Online (Sandbox Code Playgroud)

并插入style.css但是当我写

<link rel="stylesheet" href="{{ STATIC_URL }}foldername/file.css" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

Django没有插入这个文件.

所以我的问题:我做错了什么?为什么我无法从secondary_app目录插入我的css文件?我要告诉你更多有关这种情况的信息?

ami*_*nho 11

这背后的想法是您使用自己的静态文件发送所有应用程序app/static.

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

开发服务器STATIC_URL在处于DEBUG模式时处理该模式,但这是一个有趣的读物:在生产中提供静态文件