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
か何かでパスが通っているか確認してください。
参考サイト
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>