我想知道这是否可行。我目前正在通过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/...
感谢您的帮助!
答案 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