2017-07-10 5 views
0

更新

問題が見つかりました。DEBUG = Trueの場合、Djangoはすべての静的ファイルに対応していません。


MacとドッキングステーションのPCでコードが正常に動作するのは本当に奇妙です。しかし、私はクラウドサーバーにコードをアップロードすると、いくつかの静的ファイルでは404、他のファイルでは200が得られました。ここで

bootstrap.min.css 200 stylesheet (index) 119 KB 50 ms 
dataTables.bootstrap.min.css 404 stylesheet (index) 126 B 164 ms 
buttons.bootstrap.min.css 404 stylesheet (index) 126 B 165 ms 

templatesまたはhost ipと間違って私のsettings.pyたぶん

... 

DEBUG = True # still on develop 

... 

STATIC_URL = '/static/' 

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

... 

ものです:私はbase.htmlにいくつかの基本的なCSS/JSを置く

テンプレート

。 this bootstrap cssはうまく動作します。

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    {% block head_meta %} 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    {% endblock head_meta %} 

    <title>{% block head_title %}{% endblock head_title %}</title> 

    <!-- Bootstrap core CSS --> 
    <link href="/static/vendors/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet"> 

    {% block head_link %} 
    <!-- HERE I PUT EXTENDED CSS/JS --> 
    {% endblock head_link %} 

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> 
    <!--[if lt IE 9]> 
     <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> 
     <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> 
    <![endif]--> 
    </head> 
    ... 
</html> 

と私はsome.htmlで使用された場合、私はいくつかのCSS/JSを拡張します。 これらDatatables CSS/JSが404

{% extends "base.html" %} 

    {% block head_title %}Search Results{% endblock head_title %} 

    {% block head_link %} 
    <!-- Datatables --> 
    <link href="/static/vendors/Datatables-1.10.15/media/css/dataTables.bootstrap.min.css" rel="stylesheet"> 
    <link href="/static/vendors/Datatables-1.10.15/extensions/Buttons/css/buttons.bootstrap.min.css" rel="stylesheet"> 
    {% endblock head_link %} 

ホストIP

唯一の変更、私は私のMacの間で、仮定だ、クラウドサーバとPCは、ホストのIPです。

MacとPCでは、ホストipはlocalhostです。

クラウドサーバでは、ホストipは特定のipです(1.1.1.1など)。

ありがとうございます!

Djangoのバージョン:1.11

は実は、私のPCとクラウドサーバ上で、私の両方がUbuntuの16.04とドッキングウィンドウを使用していました。それで、同じenvにあります。そして、私はpython3 runserver 0.0.0.0:8000を使って私のサイトをテスト/デバッグしました。しかし、彼らは私の質問とは異なる結果を出しています。

最後に、

大変申し訳ございません。私は自分の問題を発見した、それは本当に@Alasdairが言うようにcapitalisation problemだ。しかし、MacやPC/Serverではそうではありません。 WindowsとUbuntu上の同じドッカーコンテナ(Ubuntu 16.04)で発生しました。私はそれがWindows上で正常に動作するので、それを見つけることができませんでした。そして私はまだなぜそれが分からないのですか?

ありがとうございます!

+0

ハードコードされたリンクを使用しないで、代わりにテンプレートの上部に '{%load static%}'と入力してから、次のように指定したURLを呼び出してください: 'href = '{%static" css/your_file.css "% } '' –

+0

また、サーバーにプロジェクトをデプロイするときに' collectstatic'コマンドを調べる価値があるかもしれませんが、settings.pyに静的ファイル用のいくつかの追加変数を追加する必要があります。 [Django docs](https://docs.djangoproject.com/en/1.11/howto/static-files/deployment/)ここにリンクを詳しく説明しています –

+0

正しい大文字を使用していることを確認してください。ディレクトリが 'datatables-1.10.15'の場合、' Datatables-1.10.15'はMacでは動作しますが、Linuxでは動作しません。 – Alasdair

答えて

0

djangoアプリのリバースプロキシとしてnginxを使用していますか?静的ファイルに対するHttpリクエストはdjangoリクエストとは無関係です。あなたは二つの異なる要求を分割しなかった場合は、のように:静的ファイルの

location/{ 
    include uwsgi_params; 

    uwsgi_pass 127.0.0.1:8000; 

    uwsgi_read_timeout 1200; 
    uwsgi_send_timeout 300; 
    proxy_read_timeout 300; 
} 

location /static { 
alias /some-path/your_project/collected_static; 
} 

ご要望はジャンゴて行くだろうし、その後の要求のパスがurls.pyで定義されているあなたのURLパターンと一致しないだろう、で404を得ました終わり。

+0

テストのためにまだ 'runserver'を使用していますが、今はWebサーバーを使用していません – CodeUnsolved

+0

あなたのPCとサーバーで実行したコマンドは何ですか?彼らはすべて働きますか? – Uphie

+0

実際に私のPCとクラウドサーバーでは、私は両方ともdockerとubuntu 16.04を使用していました。それで、同じenvにあります。私は 'python3 runserver 0.0.0.0:8000'を使って自分のサイトをテスト/デバッグしました。しかし、彼らは私の質問とは異なる結果を出しています。 – CodeUnsolved

関連する問題