Django静态文件和require.js。相对路径?

时间:2014-08-22 00:20:39

标签: django backbone.js requirejs

我想知道这是否可行。我目前正在通过Django和Tastypie提供一个restful api,其中端点由Backbone前端应用程序使用。我来自Node + Express背景,我熟悉Express如何路由静态文件。在快递中,我将能够做到以下几点:

app.use(express.compress());
app.use(express.static(__dirname + '/public'));

并从公共目录访问我的静态文件。我可以访问/public/css/style.css我只想浏览localhost:5000/css/style.css。但是,在Django中,django.contrib.staticfiles应用程序使用绝对路径。我的静态文件位于localhost:5000/User/.../css/style.css,而不是上面提到的Express版本。除了我使用Require.js模块化我的Backbone应用程序之外,这个约定没问题。无论我如何设置我的baseUrl,我的Backbone应用程序都找不到我的模块,因为Django使用绝对路径来提供静态文件。有没有办法以类似于Express'的方式缓解这个问题?实施?基本上,我希望Django将我的静态文件路由到localhost:5000/static/...

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

尝试将此行添加到urls.py

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS)

在您的settings.py中,您可以拥有以下内容:

import os

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

现在,您将从base url/static/...获取静态文件 但是你应该小心,不建议用于制作 - read here