DreamerDreamのブログ

夢想家の夢です。〜揚げたてのモヤっとしたものをラフレシアと共に〜

Djangoの使い方⑥cssを含むstaticディレクトリのコピー

以前の記事のようにApacheDjangoのページを表示しようとするとレイアウトが崩れることがあります。 

dreamerdream.hateblo.jp

 

原因はデフォルトのスタイルシート、staticディレクトリが読み込めないということです。

 

本来、このような型で表示されるべきところが

f:id:DreamerDream:20180921135643p:plain

 

このようにレイアウトの崩れたページになります。

f:id:DreamerDream:20180921135653p:plain

 

まずはデフォルトのテンプレートが格納されているディレクトリを調べます

$ python3 -c "import django; print(django.__path__)"
['/usr/local/lib/python3.5/dist-packages/django']

 

そのままではapache用に/usr/以下のデフォルトのディレクトリの権限を変更しないといけないので、必要なファイルを含むディレクトリ(今回は求められているstatic/adminのスタイルシート)をプロジェクトのディレクトリに全コピーします。

f:id:DreamerDream:20181001165913p:plain

sudo cp -r /usr/local/lib/python3.5/dist-packages/django/contrib/admin/static/admin/ /home/django/draemon/draemon/static/

つまり、

/usr/local/lib/python3.5/dist-packages/django/contrib/admin/static/admin/

以下のものを全て

/home/django/draemon/draemon/static/admin/

として使います。

 

コピー先にApache2のサイト.confでAliasを設定し、権限を与えます。

/etc/apache2 $ sudo nano sites-available/draemon.conf

下記を追加

Alias /static/admin/ /home/django/draemon/draemon/static/admin/
<Directory /home/django/draemon/draemon/static>
Require all granted
</Directory>

これで/static/admin/にアクセスしてきたものがプロジェクト内にコピーしたファイルにアクセス出来ることになります。

コピーなのでスタイルシートも好きに弄って大丈夫です。

 

ディレクトリの場所はややこしいですが、[プロジェクトディレクトリ]/[プロジェクト名ディレクトリ]/staticです。

解らなければApacheのエラーログを見れば良いです。

client denied by server configuration: /home/django/draemon/draemon/static, 

と出ていますのでここのstaticディレクトリが読めていないんだなーということが解ります。

 

 

 

次回 

dreamerdream.hateblo.jp

 

 

<参考サイト>

Djangoの管理画面作成 | 屋根裏の部屋

kampa.me