2016-08-03 7 views
0

私は現在現在Django(1.9)で怒っています!悲しいことは、「Static URL」が私に問題を与えていることです。 'Media URL'は正常に動作していますが、問題はありませんが、静的なURLは大きな頭痛を与えています。私settings_dev.pyDjango Static Url Error、Not Loading

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

私は、以下のタグを追加します。

{% load static from staticfiles %} 

    <script type="text/javascript" src="{% static 'datepicker/js/bootstrap-datepicker.js' %}"></script> 

のjsファイルがロードされません。ソースコードをチェックすると、以下のリンクが表示されます。私はそれが今

http://127.0.0.1:8000/static/datepicker/js/bootstrap-datepicker.js 

と表示

Page not found (404) 
    Request Method: GET 
    Request URL: http://127.0.0.1:8000/static/datepicker/js/bootstrap- datepicker.js 

に私をリダイレクトしますクリックすると

<script type="text/javascript" src="/static/datepicker/js/bootstrap-datepicker.js"></script> 

は、私は、しかし

if settings_dev.DEBUG: 
    # static files (images, css, javascript, etc.) 
    urlpatterns += patterns('', 
     (r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
    'document_root': settings_dev.MEDIA_ROOT, 'show_indexes': True}), 
     (r'^static/(?P<path>.*)$', 'django.views.static.serve', { 
    'document_root': settings_dev.STATIC_ROOT, 'show_indexes': True}), 
) 

に私のurls.pyを調整しました私はまだ同じエラーが発生しています!ページが見つかりません。

プロジェクトディレクトリ

PROJECT NAME: Book/ 

SUB DIRECTORY: 
    media 
    static 
    Template 
    book 
    bookapp 
    manage.py (this is a file) 

私は何をしないのですか?

+1

あなたは** ** Apacheやnginxのように、あなたのウェブアプリをホストするために地元のPythonのDjangoの開発サーバから離れて、他のサーバを使用していますか?つまり、 'python manage.py collectstatic'を使っていますか? –

+0

また、static_urlが実際に静的ファイルの正しいディレクトリを検索しているかどうかを確認するために、ルートディレクトリの様子を表示できますか? –

+0

@AnkushRaghuvanshi私は – YoYo

答えて

2

あなたのために物事を明確にしても大丈夫でこれを設定する必要があります。

STATIC_ROOTは、ファイルを別のサーバーに配信する場合に、たとえばAPACHEまたはNGINX、またはおそらくHerokuなどのように、すべての静的データが収集されるディレクトリです。

ローカル開発サーバーでWebアプリケーションを実行したくない場合は、python manage.py collectstaticを必要とせず、したがってSTATIC_ROOTは必要ありません。

必要なのはSTATIC_URLです。また、静的ファイルがある場所にある場合は、STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"),]も必要です。

したがって、djangoが静的ファイルを探す基本ディレクトリに `static 'という名前のフォルダがあります。

STATIC_DIRSSTATIC_ROOTと同じフォルダを指定すると、自動的にエラーが発生します。 Djangoは技術的に2つの異なる目的のために同じディレクトリを提供しようとしているので、これを行うことはできません。

詳細な説明のためにこれを参照してください - 、まず>Differences between STATICFILES_DIR, STATIC_ROOT and MEDIA_ROOT

+0

ありがとう。その場合、私のSTATIC_ROOT = os.path.join(PROJECT_PATH、 '../static /')が正しいです。それはそれを見つけるべきです。 STATIC_DIRSの必要はありません。なぜなら私の静的ファイルが格納されている場所は1つしかないからです。私はまだ開発サーバーにいます。 – YoYo

+0

まだDjangoが私の静的なURLを見つけることができない理由を知りません – YoYo

+0

No.itsが正しくありません。 –

1
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"),] 

その行は、プロジェクトstaticフォルダのファイルを提供するために十分である...そして、あなたはあなたのurls.py

urlpatterns = [ 
    ... 
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 
+0

私のソリューションを試しましたか? –

+0

STATIC_ROOTは、プロダクションサーバーを意味します。このリンクを参照してください... https://docs.djangoproject.com/en/1.10/howto/static-files/#deployment –

+0

このエラーが発生しました不適切に設定されました: STATICFILES_DIRSの設定にはSTATIC_ROOTの設定が含まれていません – YoYo