1

DjangoサイトでjQueryを使用しようとしています。jQuery.jsライブラリを含める必要があります。私はDjango静的ファイルについてたくさん読んだことがありますが、この特定の質問をした人はいないと思います。提供する静的ファイルは、jquery.js、anothersmallfile.js、styles.cssの3つだけです。静的ファイルサービングに関するDjangoのドキュメントは次のように述べています。

「小規模なプロジェクトの場合、これは大したことではありません。Webサーバーが見つけられる場所に静的ファイルを保持できるからです。リンク

Djangoのドキュメントでは、静的ファイルの提供方法は開発環境専用であると明確に述べられているため、「Webサーバーが見つけられる場所に置いておく」ことをお勧めします。静的ファイルは数個しかないので、最も単純で安全なソリューションが必要です。

残念ながら、動作させることができません。ファイルをどこに置いても、Djangoはそれらを見つけることができません。Chrome Web開発者コンソールを介してデバッグすると、404エラーが発生することがわかります。

GET http://127.0.0.1:8000/templates/polls/jquery.js 404 (NOT FOUND)

サーバーを実行するのは初めてです。A.)静的ファイルの場所をurls.pyファイルに指示する必要がありますか?または、おそらく問題はBです。)私はこの問題を誤解しています-Django私のWebサーバー(本番用)なので、今はDjango静的ファイルソリューションを使用する必要がありますか?

テンプレートに、同じディレクトリにある.jsファイルを単純に認識させるのはそれほど難しいことではないようです。私は何かが足りないのですか?

編集、反対票を増やす前に:上にリンクされているページからこの一節について話している:

///////////////////////

Django開発者は主に、Webアプリケーションの動的な部分、つまりリクエストごとに新しくレンダリングされるビューとテンプレートに関心を持っています。ただし、Webアプリケーションには他の部分があります。完全なWebページをレンダリングするために必要な静的ファイル(画像、CSS、Javascriptなど)です。

小さなプロジェクトの場合、これは大したことではありません。Webサーバーが見つけられる場所に静的ファイルを保持できるからです。ただし、大規模なプロジェクト(特に複数のアプリで構成されるプロジェクト)では、各アプリケーションによって提供される静的ファイルの複数のセットを処理するのが難しくなり始めます。

それがdjango.contrib.staticfilesの目的です。各アプリケーション(および指定したその他の場所)から静的ファイルを収集して、本番環境で簡単に提供できる単一の場所に配置します。

///////////////////強調を追加

それがdjango.contrib.staticfilesの目的である場合、より簡単な解決策は何ですか?私はこれが以前の質問の繰り返しであることに異議を唱えます。

4

2 に答える 2

2

そのドキュメントをもっとよく読む必要があります。その警告はproduction用です。開発では、その静的サービス メソッドを使用します。つまり、urls.py に配置します。また、そのドキュメントは、テンプレート ディレクトリがそれらを置くのに適切な場所ではないことも示しています: 別の静的またはメディア ディレクトリはそうです。

コメント後に編集する私はあなたのコメントを本当に理解していません。静的サービング ビューを介して開発で行うか、本番サーバーを使用します。しかし、あなたは本番サーバーを持っていないと言います。Apache や Nginx などのファイルを取得したら、静的ファイルをディレクトリに配置し、そのサーバーにそこからファイルを提供するように指示します。それ簡単な解決策です。staticfiles アプリは、引用したドキュメントとまったく同じように、さまざまなアプリに多数のファイルがある場合に使用します (開発から運用への移行を簡素化し、思ったほど複雑にしません)。

于 2011-08-23T21:02:35.920 に答える
0

あなたのアプリがwww.

  1. setting.py -> STATIC_ROOT = 'static/'
  2. dir www/static にする
  3. メイクファイル www/static/some.html
  4. ブラウザで localhost:8000/static/some.html

それで全部です。

于 2012-09-06T11:05:38.887 に答える