缺少引导资源在Django的REST架构(Missing bootstrap resources i

2019-07-03 15:29发布

我使用的是新的Django的休息框架2.0 ,并已下创建一个基于REST API的教程。 该API现在已经完成,但我遇到麻烦引导资源加载,全部采用404回不从Django中找到。

我觉得像资源应该从Django的REST的框架模块的静态目录加载,而当我做“python2.7 / DIST-包/ rest_framework /静态/ rest_framework”我看到了CSS,JS和img目录的列表我需要,但我一直无法找到说明如何将CSS从模块到我的项目链接的文档中的任何地方。

什么是这里最好的行动过程? 我应该下载源和文件夹复制到我的/静态目录? 符号链接是不可能的,因为我需要检查的项目为中央回购..想法?

Answer 1:

先上去,我假设你的意思是引导静态资源不加载的可浏览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起),并确保你通过教程一步一步 - 工序,照顾特别是与项目设置。



Answer 2:

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

settings.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())


Answer 3:

CSS是找不到的。 此修复程序是使丢失的CSS文件(404在浏览器控制台看到文件)可用。 而已。

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

该解决方案可完美的,如果你有一个单独的前端和后端(宁静)设置,如Django的Django的REST框架和AngularJS ..

让我们说,如果Django的后台运行在8000和前端在9000上运行。

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

  • backend.example.com负载Django应用程序在运行的8000

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/

DONE。

我所做的基本上是复制Django的应用程序的所有的CSS到前端。 作为前端已经是静态文件的集合前端提供这个方便。



文章来源: Missing bootstrap resources in Django-Rest-Framework