2012-07-19 111 views
0

我在django上做了一个小应用程序,它使用的是模板。每个tempalate使用静态文件,如css,js和图像。所有这些文件与模板位于同一目录中。django和静态css加js文件

template 
    main.html 
    support.html 
    about.html 
    ... 

    css 
     reset.css 
     style.css 
     ... 

    img 
    js 
     jquery.js 
     main.js 
     ... 

如果有配置django开发服务器来加载这些文件而不编辑html模板文件?

我收到

http://127.0.0.1:8000/face/css/960_24_col.css 404 NOT FOUND 127.0.0.1:8000 

这改变了settings.py没有帮助我

STATIC_ROOT = 'C:/Projects/site/website/face/static/' 
STATIC_URL = '/static/' 
STATICFILES_DIRS = ('C:/Projects/site/website/face/static',) 

回答

0

您可能需要使用的contrib应用staticfiles。在文档页面的底部,您将看到如何在开发服务器上使用它。

0

STATIC_URL已被定义为'/ static /',因此所有静态文件都将从/静态提供。

换句话说/face/css/960_24_col.css不正确。

这应该是/static/face/css/960_24_col.css,假设face目录位于C:/ Projects/site/website/face/static/face。

也许我还建议你不要在你的设置文件中使用绝对路径。要找出项目根目录的绝对路径,请使用以下内容:

PROJECT_DIR = os.path.abspath(os.path.dirname(__file__)) 
+0

很奇怪建议不要在settings.py文件中使用绝对路径。因为根据settings.py中的默认注释,可以预先使用绝对文件路径。 – simar 2012-07-20 09:44:13

+0

我的意思是最好不要使用静态绝对路径,而要使用动态绝对路径。如果你部署到你的生产服务器上,那是在Linux上运行,而你在Windows上开发呢?当你使用静态aboslute路径(c:\ foo \ bar)时,这很明显,不适用于Linux机器。 – 2012-07-20 10:10:25

0

以下是我如何通过Django dev服务器提供静态文件。

定义在urls.py:

from os import getcwd, path as ospath 
... 
urlpatterns += patterns('', 
    (r'css/([a-zA-Z0-9_.]+.css)$', 'django.views.static.serve', {'document_root': ospath.join(getcwd(), 'css')}), 
    (r'images/(.*)$', 'django.views.static.serve', {'document_root': ospath.join(getcwd(), 'images')}), 
    (r'js/([a-zA-Z0-9_.]+.js)$', 'django.views.static.serve', {'document_root': ospath.join(getcwd(), 'js')}) 
)