13

我正在使用新的django-rest-framework 2.0并且一直在按照教程创建基于休息的 API。API 现在已经完成,但是我无法加载引导资源,所有资源都返回 404 Not Found 从 Django。

我觉得应该从 django-rest-framework 模块的静态目录加载资源,当我在 'python2.7/dist-packages/rest_framework/static/rest_framework' 上列出时,我看到了 css、js 和 img 目录我需要,但我无法在文档中找到任何地方显示如何将 CSS 从模块链接到我的项目。

这里最好的做法是什么?我应该下载源代码并将文件夹复制到我的 /static 目录中吗?符号链接是不可能的,因为我需要将项目签入中央仓库。想法?

4

3 回答 3

19

首先,我假设您的意思是引导静态资源没有为可浏览的 API 加载?(虽然我猜可能是你试图在项目的其他地方使用它们?)

如果您正在运行,DEBUG=True它们应该自动提供服务,但是一旦您运行,DEBUG=False您需要确保运行manage.py collectstatic并确保您的STATIC_ROOTSTATIC_URL设置正确。

Django 的静态文件文档应该有所帮助:https ://docs.djangoproject.com/en/dev/howto/static-files/

如果您仍然没有任何运气,我建议您仔细检查您的 Django 版本(支持 1.3 及更高版本)和 REST 框架版本(从版本 2 开始的任何版本),并确保您逐步完成教程-step,特别注意项目设置。

于 2012-11-06T20:19:59.187 回答
2

如果您使用 Heroku,您需要确保您使用的是入门文档 ( https://devcenter.heroku.com/articles/getting-started-with-django ) 中的配置。请参阅“settings.py”和“wsgi.py”部分。我遇到了同样的问题,这解决了它。

设置.py

import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

wsgi.py

from django.core.wsgi import get_wsgi_application
from dj_static import Cling
application = Cling(get_wsgi_application())
于 2014-07-13T08:59:43.507 回答
-1

未找到 CSS。解决方法是使丢失的 css 文件(在浏览器控制台中看到的文件为 404)可用。就是这样。

您可以使 css 文件在后端(需要一些调整)或前端(比较容易)中访问。

如果您有单独的前端和后端(restful)设置,例如 Django-Django REST 框架和 AngularJS,则此解决方案非常有效。

假设 django 后端运行在 8000,前端运行在 9000。

  • frontend.example.com 加载运行在 9000 的前端 JS 应用程序

  • backend.example.com 加载运行在 8000 的 django 应用程序

settings.py

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

STATIC_URL = 'http://frontend.example.com/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

然后在终端

$ python manage.py collectstatic

然后转到您拥有该文件夹的目录static

$ cp -rf static/* /frontend-code-directory/static/

完毕。

我所做的基本上是将所有 django 应用程序的 css 复制到前端。前端很容易做到这一点,因为前端已经是静态文件的集合。

于 2016-09-15T10:44:48.487 回答