Django グローバル
グローバルなCSSファイルを追加する
アプリケーションのstatic
フォルダに静的ファイルを追加する方法と、それをアプリケーションで使用する方法を学習しました。
しかし、プロジェクト内の他のアプリケーションがこのファイルを使用したい場合はどうなるでしょうか?
そのためにはルートディレクトリにフォルダを作成し、そこにファイルを配置する必要があります。
ルートディレクトリにstatic
フォルダを作れば、あとはDjangoが解決してくれるというわけではありません。Djangoに静的ファイルの場所を教えなければなりません。
まずプロジェクトのルートレベルにフォルダを作成します。このフォルダには好きな名前を付けることができますが、このチュートリアルではmystaticfiles
とします。
CSSファイルをmystaticfiles
フォルダーに追加します。名前は任意ですがこの例では、myglobal.css
とします。
CSSファイルを開き、以下を挿入します。
my_tennis_club/mystaticfiles/myglobal.css
:
設定の変更
ルートディレクトリのmystaticfiles
フォルダーでも静的ファイルを検索するようにDjangoに指示する必要があります。これはsettings.py
ファイルで行われます。
STATICFILES_DIRS
リストを追加します:
my_tennis_club/my_tennis_club/settings.py
:
STATICFILES_DIRS
リストには、Djangoが静的ファイルを探すディレクトリを全て列挙できます。
BASE_DIR
キーワードはプロジェクトのルートディレクトリを表し、/ "mystaticfiles"
と組み合わせると、ルートディレクトリ内のmystaticfiles
フォルダを意味します。
検索順序
同じ名前のファイルがある場合、Djangoは最初に見つかったファイルを使用します。検索は指定した順序でリストされているディレクトリ内で開始されます。STATICFILES_DIRS
ファイルが見つからない場合は、各static
アプリケーションのフォルダ内で検索が続行されます。
テンプレートを変更する
これで、プロジェクト全体のグローバルCSSファイルが作成され、すべてのアプリケーションからアクセスできるようになりました。
これをテンプレートで使用するには、myfirst.css
ファイルの場合と同じ構文を使用します。
テンプレートを次のように開始します。
{% load static %}
そして、次のようにファイルを参照します。
<link rel="stylesheet" href="{% static 'myglobal.css' %}">
例
my_tennis_club/members/templates/template.html
:
動作しませんでしたか?
それは正しいです。静的ファイルをもう一度収集する必要があります。
静的ファイルの収集
collectstaticコマンドを実行して、新しい静的ファイルを収集します。
これにより、次の結果が生成されます。
「yes」と入力します:
これにより、次の結果が生成されます。
これで機能します。
サーバーを起動すると、例が機能します。
自分のブラウザ127.0.0.1:8000/testing/
で結果を確認してください。
例
my_tennis_club/members/templates/template.html
:
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。