繁体   English   中英

缺少Django-Rest-Framework中的引导程序资源

[英]Missing bootstrap resources in Django-Rest-Framework

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

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

这里最好的行动是什么? 我应该下载源并将文件夹复制到我的/ static目录中吗? Symlinking是不可能的,因为我需要检查项目到一个中央回购..想法?

首先,我假设你的意思是引导静态资源没有为可浏览的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,特别注意项目设置。

如果您正在使用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())

找不到CSS。 修复方法是使缺少的css文件(浏览器控制台中显示的文件为404)可用。 而已。

您可以在后端(需要一些调整)或前端(相对简单)中访问css文件。

如果你有一个单独的前端和后端(restful)设置,如Django-Django休息框架和AngularJS,这个解决方案是完美的。

让我们说如果django后端运行在8000,前端运行在9000。

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

  • backend.example.com加载运行在8000的django app

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

然后转到dir,你有文件夹static

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

DONE。

基本上我做的是将所有django应用程序的CSS复制到前端。 前端服务很简单,因为前端已经是静态文件的集合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM