概要
主な留意点は以下の通り。
- DjangoのデフォルトDBMSはSQLite
- 言語・タイムゾーン・DB設定などは
settings.py
で記述(Laravelの.env
に相当) - Vagrantなどの仮想環境の場合はサーバー起動のIPに注意
→ゲスト側でALLOW_HOSTS
の設定も必要
データベースクライアントのインストール
DjangoのデフォルトではSQLiteとなっている。SQLiteの場合は一定以上のバージョンが要求される模様。
他のDBMSを使う場合、クライアントをインストールしておく必要がある。以下はMySQLを使う場合にmysqlclient
をインストールした例。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ pip3 install mysqlclient Collecting mysqlclient Downloading mysqlclient-2.1.0.tar.gz (87 kB) |████████████████████████████████| 87 kB 340 kB/s Preparing metadata (setup.py) ... done Building wheels for collected packages: mysqlclient Building wheel for mysqlclient (setup.py) ... done Created wheel for mysqlclient: filename=mysqlclient-2.1.0-cp36-cp36m-linux_x86_64.whl size=97317 sha256=d4a6c57befdfa5ba5fe7b0a35df349685443037c2be88627c79d0bd7ed4c2bdf Stored in directory: /home/vagrant/.cache/pip/wheels/96/0d/a8/c8cd77741e717373250fffd50cb3b8cbe7ed0a40aa3e11169c Successfully built mysqlclient Installing collected packages: mysqlclient Successfully installed mysqlclient-2.1.0 |
settings.py~各種設定
言語とタイムゾーン
言語を日本語に、タイムゾーンを日本のものに設定。
1 2 3 4 5 |
#LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'ja' #TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Tokyo' |
データベース設定
デフォルトのSQLiteではなくMySQLを使う例
1 2 3 4 5 6 7 8 9 10 |
DATABASES = { 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': BASE_DIR / 'db.sqlite3', 'ENGINE': 'django.db.backends.mysql', 'NAME': 'データベース名', 'USER': '接続ユーザー名', 'PASSWORD': 'パスワード', } } |
ホスト許可
Vagrantなど仮想環境のプライベートネットワークで接続する場合、ここに設定が必要。
1 2 |
# ALLOWED_HOSTS = [] ALLOWED_HOSTS = ['127.0.0.1', 'localhost'] |
Vagrantの場合
Vagrantfileの設定
ポートマッピング設定。プライベートネットワークはデフォルト。
1 2 3 4 5 |
........ config.vm.network "forwarded_port", guest: 8000, host: 8000 ........ # config.vm.network "private_network", ip: "192.168.33.10" ........ |
ゲスト側IP確認
ゲスト側の仮想環境でサーバーを起動する場合のIPを確認。ホスト側では127.0.0.1にセットされている。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255 inet6 fe80::10ae:de8c:87bc:71ab prefixlen 64 scopeid 0x20<link> ether 08:00:27:0e:4e:dd txqueuelen 1000 (Ethernet) RX packets 7361 bytes 727729 (710.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 5168 bytes 2085890 (1.9 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
開発用Webサーバー起動
ifconfig
で確認したゲスト側のIPでサーバーを起動する。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ python manage.py runserver 10.0.2.15:8000 Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. March 06, 2022 - 16:19:28 Django version 3.2.12, using settings 'djangotest.settings' Starting development server at http://10.0.2.15:8000/ Quit the server with CONTROL-C. |
ブラウザーで接続
ホスト側のブラウザーで、http://localhost:8000かhttp://127.0.0.1:8000で接続。