はじめに
Djangoでテスト用にちょっとしたhtmlファイルを置きたかったのだが、そのものずばりな単純なやり方だけを書いてる記事を見つけられず、すごく簡単なことをやりたかっただけなのにかなり時間を食ってしまった。
そのため最短手順をここに書き記しておこうと思う。
作成方法
とりあえずやり方だけ記載。解説は後程。
環境
以下の環境で確認。
H/W | AWS EC2(t2.micro) |
OS | Ubuntu 20.04 |
以下、インスタンス起動直後のさらっぴんな状態から説明する。
$ pwd
/home/ubuntu
djangoインストール
まずはapt updateしたあとdjangoをインストールする。
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install -y python3-django
プロジェクトの作成
「testprj」という名のプロジェクトを作成する。
$ mkdir testprj
$ cd testprj
$ django-admin startproject testprj .
staticファイルの置き場所設定(settings.py)
さっきの手順でプロジェクトに必要なファイル一式が作成されたのでstaticファイルの配置場所(つまりはLinux上のディレクトリ)をsettings.pyに追記する。ここでは「static_files」ディレクトリとした。
$ cat <<EOF >> testprj/settings.py
> STATICFILES_DIRS = [
> os.path.join(BASE_DIR, 'static_files'),
> ]
> EOF
BASE_DIRはプロジェクトのベースディレクトリ=/home/ubuntu/testprj/ なので、STATICFILES_FIRSは/home/ubuntu/testprj/static_files/ となる。
htmlファイルの配置
先ほど作成したstatic_filesディレクトリに適当なhtmlファイルを作成する。
$ mkdir static_files
$ echo "This is test html." > static_files/test.html
htmlと謳ってるが中身はタグもないただのテキストである。
HTTPサーバ起動
ここまでで準備完了なのでサーバ起動して動作確認する。
$ python3 manage.py runserver 127.0.0.1:8000
HTTPアクセス
端末をもう一つ立ち上げ、curlで下記URLにアクセスしたらtest.hhtmlが取得できた。
$ curl http://localhost:8000/static/test.html
This is test html.
解説
上記手順の中でsetting.pyに設定を追記したが、改めて中身を確認すると以下のようになっている。
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static_files'),
]
STATIC_URLはデフォルトで設定されているもので、今回追加したのはSTATICFILES_DIRSである。
os.path.join()は第一引数と第二引数のパスをつなぎ合わせる関数。
この設定の意味するところは、「STATICFILES_DIRSディレクトリにあるstaticファイルをSTATIC_URLで指定したパス以下で取得する」ということになる。
整理すると以下の関係ということだ。
URL | http://127.0.0.1:8000/static/test.html | 赤字がSTATIC_URL |
ディレクトリ | /home/ubuntu/testprj/static_files/test.html | 青字がSTATICFILES_DIRS |