@Simeon Visserの回答に時間を割いていただき、本当に感謝しています。そこには本当に役立つ情報がいくつかありましたが、それは私が探していたものではありませんでした。だから私は周りに尋ねて、redditからsinister_user_nameを持ってこれに感謝しました。これは他の誰かを助けるかもしれないと思いました:
最近のリリースでは静的ファイルがかなり変更されているため、古いブログは少し混乱している可能性があります。
私はそれにショットを与えます:
テンプレートではstatic_url
タグを使用でき、djangoがパスを入力します。
<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.min.css">
設定ファイルを見て静的URLを入力します。STATIC_URL
デフォルト/static/
は設定で思いますか?静的ファイルが企業のWebサーバーで奇妙なURLになってしまった場合は、とにかく設定で変更するだけで、すべてのテンプレートに反映されます。したがって、それらが絶対的であるかどうかは関係ありません。
デプロイに行くときSTATIC_ROOT
は、設定を入力します。これは、静的ファイルを見つけるためにWebサーバーを設定したパスにすぎません。次に、実行するmanage.py collectstatic
と、それらがそのディレクトリにコピーされます。STATIC_ROOT
それが私が思う唯一の機能です。
テンプレートディレクトリを静的ディレクトリから分離します。これは主に、テンプレートがPythonによって処理されている間、Webサーバーが静的ファイルを提供することだけを目的としているためです。したがって、静的ファイルは、Webサーバーがそれらを表示する限り、ほとんどアプリケーションの一部ではありません。テンプレートと静的ファイルは、主に両方ともPythonソースファイルではないため、ベースディレクトリ内の別々のパスに保持します。
したがって、私のプロジェクト構造は次のようになります。
manage.py
website/settings.py
app/models.py
app/views.py
templates/base.html
static/js/jquery.js
static/css/bootstrap.css
相対パスの問題は、URLスキームが変更された場合に変更する必要があることです。
オプション:このブログで、絶対ファイルシステムパスをsettings.pyに入れないようにするのに役立ちます。これは、職場と自宅など、複数のマシンで作業する場合に適しています:( 1.4のレイアウトが少し異なるため、これを上部で使用します。私の設定:
import os
import django
import manage
DJANGO_ROOT = os.path.dirname(os.path.realpath(django.__file__))
SITE_ROOT = os.path.dirname(os.path.realpath(manage.__file__))
彼らが提案するものの代わりに(設定の場所は1.4または1.3で移動しました)、SITE_ROOT
混乱しています。私はそれがうまくいくかもしれないと思います。さらに下の設定で私はこれを使用します:
# Additional locations of static files
STATICFILES_DIRS = (
os.path.join(SITE_ROOT, 'static'),
)
これにより、静的ファイルの場所が開発サーバーに通知されます。テンプレートについても同じことができますが、ファイルのフルパスを使用することもできます。