Djangoでcss/jsファイルを扱う

Djangoでは基本的にStaticファイルは取り扱わないというイメージです。

よって、HTMLファイルには絶対パスで指定します。

作業としてはApatchをいじってcss/jsファイルを置く場所を指定して

絶対パスの環境についてデバッグ環境と本番環境と自動的に分けられるよう設定する。

Apatch2の設定

/etc/apache2/sites-available/default

を編集してAliasを使ってmedia関係ファイル置き場の絶対パスを設定します。

編集後は、編集内容を反映させるためにApache2を再起動します。

$sudo vim /etc/apache2/sites-available/default

Alias /media/ "/var/django/media/"

<Directory "/var/django/media/">

Options Indexes MultiViews FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

Allow from all

</Directory>

$sudo /etc/init.d/apache2 restart

http://localhost/media/~.png

か何かでパスが通っているか確認してください。

参考サイト

ケイケンラボ Apache2 Aliasの設定

MEDIA_URLの設定

動かす場所をデバッグと本番サーバーで分けるためにcustum.pyみたいなものを作りました。

HTMLファイルに記載するメディアの絶対パスはMEDIA_URLを使います。

settings.py

import custum.py

MEDIA_URL = '%s/ukimedia/' % custum.USE_HOSTNAME

custum.py

REAL_HOSTNAME = 'www.hogehoge.jp'

LOCAL_HOSTNAME = 'localhost'

DEBUG_HOSTNAME = '127.0.0.1:8000'

USE_HOSTNAME = DEBUG_HOSTNAME

views.pyの設定

views.pyでrender_to_responseをするときに以下のようにしてHTMLに転送する。

return render_to_response('signin/signin.html', {'host': 'http://' + settings.MEDIA_URL})

HTMLファイルの設定

以下のとおり上記で設定した{{辞書キー}}を記載してできあがりです。

<html><head>

<script type="text/javascript" src={{ketchup_jquery_min}}></script>

<script type="text/javascript" src={{ketchup_js}}></script>

<script type="text/javascript" src={{ketchup_messages}}></script>

<script type="text/javascript" src={{ketchup_validate}}></script>