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: