Visual Studio Community 2019 で、Djangoで開発を始めたので、作業メモ。とりあえず、Microsoftのドキュメントからチュートリアルを参考に。
(MS公式)チュートリアル: Visual Studio での Django Web フレームワークの概要
チュートリアルは前の2017バージョンだけど参考に、軽く動かしながら、実際に作りたいものに変えていく。
【主な変更作業】
Webプロジェクト テンプレートから、自分用に変更していく。
(MSサイト)手順 4: Django Web プロジェクト テンプレートを使用する
1 Viewの変更
まずは見た目からということで、自分の作りたいページ構成に変えていく。
- app/templates/layout.html:タイトル、メニュー、フッター等を修正
- app/views.py:templateの中で表示するデータを修正
2 DB変更
DBを、業務で使っているPostgreSQLに変更する。使うドライバとしては、以下のPsycopgがよく使われているらしいので、それを使うことにする。
(Psycopg公式)Psycopg – PostgreSQL database adapter for Python
1)ドライバのインストール
psycopg2パッケージをインストールする。インストール方法は以下ページを参考に。
(MS公式)[Python 環境] ウィンドウ タブ リファレンス
ソリューションエクスプローラーの[Python環境]>[Env]を右クリックして[Pythonパッケージの管理]からも行ける。
2)DB接続の設定
以下ページを参考に、settings.pyのDATABAESを修正。
(django公式)djangoドキュメント – Settings -DATABASES
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': '111.111.111.1111', 'PORT': '', # 空白の場合はデフォルト } }
3)既存の業務DBの定義を取り込む
以下を参考に、models.pyに既存DBの定義を追加する。
(Djangoi公式)レガシーなデータベースと Django の統合
ソリューションエクスプローラーから[Python環境] を右クリックして、[すべてのPython環境を表示]して、実行環境を選択して、下の[PowerShell で開く]。
PowerShellで、以下コマンドを実行。
$ python manage.py inspectdb
以下のエラーが出て、うまく定義を作成できないよう。
Unable to inspect table 'XXXXXXXXXX' The error was: syntax error at or near "WITH ORDINALITY" LINE 6: FROM unnest(c.conkey) WITH ORDINALITY co…
PostgreSQLがVer9.2と古くて対応していないので、いい機会なのでバージョンアップすることに。
PostreSQLをバージョン13にしたら、問題なくinspectdbができたので、models.pyに定義を追加する。
4)DBのマイグレーション
PostgreSQLにadmin関係のテーブルを作成する。Microsoftのドキュメントの手順をい参考に。
(MS公式)手順 6-1:プロジェクトを作成し、データベースを初期化する
ソリューションエクスプローラーで、プロジェクトを右クリックして、[Python]>[Django で移行を実行する]を行う。その後、[Django でスーパーユーザーを作成する]を実行。
3.setting.pyの修正
日本語設定等を行う。
(Django公式)設定 | Django ドキュメント
とりあえず、変えたところは以下。
LANGUAGE_CODE = 'ja' TIME_ZONE = 'Asia/Tokyo'
【アプリ作成】
Django公式のチュートリアルを参考に、仕組みを勉強しながら作業。
4.Djangoのバージョンアップ
Visual Studio 2019 のプロジェクトテンプレートは、Django2.2なので、最新のDjango3.1に変更した。
プロジェクトフォルダ直下のrequirement.txtのバージョンを修正する。
django~=3.1
Python環境の実行環境(ディフォルトならenv)を選択して、[パッケージ(PyPI)]を選択して、表示されている「Django2.2.*」の横の上矢印でバージョンアップするか、プロジェクトを再読み込みすれば画面上部にメッセージが出るのでクリックしてバージョンアップ。
テンプレートファイルの、staticsfilesの読み込みが、エラーになるので、テンプレートファイルを修正する。
【旧】{% load staticfiles %} ↓ 【新】{% load static %}