初歩の django 開発入門
HTMLを表示させるまでの流れ
virtualenvを使ってpython仮想環境を作り、その中でdjangoをインストールします。はじめの一歩として、django初期設定とテンプレートファイルのhtmlを表示させる所までです。
djangoはMTV(Model-Template-View)アーキテクチャと呼ばれているようです。MVC(Model-View-Controller)アーキテクチャとよく似ていますが、プログラミング実装において、どのような手順になるのか、覚え書きとして残しておきます。
目次
virtualenvのインストール
sudo apt install python3-pip
python3 -m pip install --upgrade pip
pip install virtualenv (v 20.26.2)
Python仮想環境
仮想環境を作ってその中に入る
- 環境名:gunBlog (※何でも良いです)
#仮想環境を作る。環境の名前をgunBlogとします。
$ virtualenv gunBlog
#フォルダに移動して、仮想環境に入る
$ cd gunBlog/
$ code . # VSCodeで起動
Djangoインストール
- djangoインストール
- プロジェクト名:miniBlog (※何でも良いです)
- アプリ名:blogApp (※何でも良いです)
# djangoインストール
$ pip install django
# django プロジェクトを作成。プロジェクト名はminiBlogとします。
$ django-admin startproject miniBlog
# django アプリを作成。アプリ名はblogAppとします。
$ cd miniBlog
$ python manage.py startapp blogApp
django初期設定
アプリ全体の設定
"settings.py"にアプリ名を追加します。これを忘れると動作しないので要注意です。
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blogApp', #←アプリ名追加
]
LANGUAGE_CODE = 'ja' #←修正
TIME_ZONE = 'Asia/Tokyo' #←修正
ルーティングの設定
"python manage.py runserver "でサーバーを起動すると、デフォルトで8000ポートにアクセスできます。
ブラウザで「localhost:8000」にアクセスすると、ルーティング定義ファイルの"url.py"からどのhtmlファイルを表示させるのか探します。トップページに表示させたいhtmlファイルを"indexpage.html"とすると、ルーティング設定にpath(””,indexpage, name="index_page")と記述します。
””(空のダブルクオーテーション)は「/」がなくてもルートパスを指します。
urls.py
from django.contrib import admin
from django.urls import path
from blogApp.views import indexpage #←追加
urlpatterns = [
path('admin/', admin.site.urls),
path('',indexpage, name="index_page"), #←追加
]
処理内容の記載
"views.py"にindexpage関数を定義します。何らかの処理(DBから値を取得してテンプレートファイルにデータを渡すなどの処理)が必要なら記述します。ここでは単純にindexpage.htmlを描画するだけなので、データベース関連はありません。
views.py
from django.shortcuts import render
# Create your views here.
# ここからは新規に作成
def indexpage(request):
# 何らかの処理も作成
return render(request, "blogApp/indexpage.html")
Templateファイルの作成
このindexpage.htmlはどこに置くかというと、これはまた自分でフォルダとファイルを作って用意する必要があります。
アプリフォルダ(blogApp)の中に、templatesフォルダを作成し、さらにその下にアプリ名と同名の(blogApp)フォルダを作成し、そのフォルダの下にTemplateファイル(indexpage.htmlなど)を作成します。
ここでもし、indexpage.htmlが受け取るデータがあれば、値を埋め込みHTMLを作成します。
大まかな処理フロー
以上です。