13

私は新しいdjango-rest-framework 2.0を使用しており、レスト ベースの API を作成するためのチュートリアルに従っています。API は完成しましたが、ブートストラップ リソースをロードするのに問題があり、すべて Django から 404 Not Found が返されます。

リソースは django-rest-framework モジュールの static ディレクトリからロードする必要があるように感じます。「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 以降のもの) を再確認し、チュートリアルを段階的に実行することをお勧めします。 -ステップ、特にプロジェクトのセットアップに注意してください。

于 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 ファイルにアクセスできるようにすることができます。

このソリューションは、Django-Django レスト フレームワークや 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 に答える