app_nameの動きのイメージ
app_name/内のものがどのように動いているかをまとめていきます。
以下はapp_name/内のファイル構成のおさらいです。
app_name ├── __init__.py ├── __pycache__ ├── admin.py ├── apps.py ├── forms.py ├── migrations ├── models.py ├── static │ └── ... ├── templates │ └── ... ├── tests.py ├── urls.py └── views.py
全体的なイメージ
実際にapp_nameが動くとき、基本的には
- models.py
- static/
- templates/
- urls.py
- views.py
の5つが連携して動いているイメージです。
その他、必要に応じて
- admin.py
- apps.py
- forms.py
が関わってくる感じです。
以下ではそれぞれのファイルやフォルダの動きについてまとめます。
models.py
ここではデータベースの構成を決めています。
ここに書いたクラスはモデルといわれ、データベースのtableに対応します。class内で変数を定義するとそれはフィールドといい、columnに対応します。
例えば以下のようにClassNameというクラスを作成し、その変数としてname, size, uploaded_atを作成します。
class ClassName(models.Model): name = models.CharField(max_length=50) size = models.IntegerField() uploaded_at = models.DateTimeField()
データベースにはname, size, uploaded_atという列を持った、ClassNameという表が作成されるという感じです。
name | size | uploaded_at |
---|---|---|
作品A | 120 | 1月23日 |
作品B | 80 | 7月1日 |
static/とtemplates/
templates/には表示したいページのhtmlファイルを保存します。ここでのhtmlはDjangoで動的ページを作成するために少し特殊な書き方をします。
static/には、静的ファイルといわれるcssやJavaScriptのファイルを保存します。
urls.py
views.pyで作成したビューにURLを割り当てます。
DjangoでのURLは、example.com/path/to/a/file.html のようなディレクトリ構造そのままのURLではなく、urls.pyで指定したURLに従ってページが表示されます。
views.py
models.pyで作られたデータベースをもとに情報の処理や計算を行い、その結果に応じてどのhtmlのページへアクセスさせるかなどを決められます。ここをいじることでwebサイトに様々な挙動をさせることができます。
ここで使った変数などはhtmlへ引数として渡すことができます。
admin.py
Djangoの管理者ページで表示するものや編集できるものを決められます。
forms.py
何か入力フォームを作成するときに使います。