TECH I.S.

Django グローバル


グローバルなCSSファイルを追加する

アプリケーションのstaticフォルダに静的ファイルを追加する方法と、それをアプリケーションで使用する方法を学習しました。

しかし、プロジェクト内の他のアプリケーションがこのファイルを使用したい場合はどうなるでしょうか?

そのためにはルートディレクトリにフォルダを作成し、そこにファイルを配置する必要があります。

ルートディレクトリにstaticフォルダを作れば、あとはDjangoが解決してくれるというわけではありません。Djangoに静的ファイルの場所を教えなければなりません。

まずプロジェクトのルートレベルにフォルダを作成します。このフォルダには好きな名前を付けることができますが、このチュートリアルではmystaticfilesとします。

my_tennis_club     db.sqlite3     manage.py     my_tennis_club/     members/     mystaticfiles/

CSSファイルをmystaticfilesフォルダーに追加します。名前は任意ですがこの例では、myglobal.cssとします。

my_tennis_club     db.sqlite3     manage.py     my_tennis_club/     members/     mystaticfiles/         myglobal.css

CSSファイルを開き、以下を挿入します。

my_tennis_club/mystaticfiles/myglobal.css:
body { color: violet; }

設定の変更

ルートディレクトリのmystaticfilesフォルダーでも静的ファイルを検索するようにDjangoに指示する必要があります。これはsettings.pyファイルで行われます。

STATICFILES_DIRSリストを追加します: my_tennis_club/my_tennis_club/settings.py:
. . STATIC_ROOT = BASE_DIR / 'productionfiles' STATIC_URL = 'static/' #Add this in your settings.py file: STATICFILES_DIRS = [ BASE_DIR / 'mystaticfiles' ] . .
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:
{% load static %} <!DOCTYPE html> <html> <link rel="stylesheet" href="{% static 'myglobal.css' %}"> <body> {% for x in fruits %} <h1>{{ x }}</h1> {% endfor %} </body> </html>

実行例(開発準備中) »


動作しませんでしたか?

それは正しいです。静的ファイルをもう一度収集する必要があります。


静的ファイルの収集

collectstaticコマンドを実行して、新しい静的ファイルを収集します。

py manage.py collectstatic

これにより、次の結果が生成されます。

You have requested to collect static files at the destination
location as specified in your settings:

    C:\Users\Your Name\myworld\my_tennis_club\productionfiles

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel:

「yes」と入力します:

Type 'yes' to continue, or 'no' to cancel: yes

これにより、次の結果が生成されます。

Your Name\myworld\my_tennis_club\productionfiles', 131 unmodified.

これで機能します。

サーバーを起動すると、例が機能します。

py manage.py runserver

自分のブラウザ127.0.0.1:8000/testing/で結果を確認してください。

my_tennis_club/members/templates/template.html:
{% load static %} <!DOCTYPE html> <html> <link rel="stylesheet"; href="{% static 'myglobal.css' %}"> <body> {% for x in fruits %} <h1>{{ x }}</h1> {% endfor %} </body> </html>

実行例(開発準備中) »



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細