PythonとDjangoによるWebアプリ作成


PythonでWebアプリを作ってみたい!

下記の記事を見てやってみたくなったので試してみました。
https://qiita.com/okoppe8/items/4cc0f87ea933749f5a49

困った点

仮想環境の構築が上手くいかない

紹介されている下記のコマンドを流しても仮想環境がうまく作成できない
python -m venv env
env\Scripts\activate

envフォルダが作成されていることは確認できたが、env\Scripts\activateを流してもそんなフォルダは存在しないと返される。

追記

env\Scriptsフォルダのactivateではなく、activate.batを叩けということだった。
フォルダを移動した後にactivate.batを実行することで仮想環境が実行された。
実行されるとコマンドプロンプトの前に(env)と表示されるようになる。
cd env\Scripts
activate.bat

仮想環境は他の方法でも作成できる

下記の記事を見てcondaの仮想環境作成機能が使いやすいとの記載を発見。
https://blog.codecamp.jp/programming-python-virtual-environment
私のPCは以前にAnacondaを導入していたので、condaで仮想環境作成を実施してみることにした。

condaの仮想環境作成機能でうまくいく

まずはAnacondaPromptが正常に動作していることを確認する為に、python -V と打ち込み、バージョン情報が返ってくることを確認。

続いて、condaで仮想環境構築コマンドを流してみる

conda create -n ○○ ← ○○には任意の仮想環境名を指定する

アクティベートコマンドを実行

conda activate ○○ ← ○○は上で付けた任意の名称

仮想環境で実行できているか確認(作成直後は何もないが)

conda -list

仮想環境が動作していることが確認できたら、コマンド cd で今回作成した仮想環境に移動。

cd ○○ 

チュートリアルに沿って作業

必要なライブラリをpipでインストール
pip install -r requirements.txt
データベースの構築
python manage.py migrate
管理者ユーザーを作成
python manage.py createsuperuser
サーバー起動
python manage.py runserver
ブラウザでアクセスできるか確認
http://127.0.0.1:8000/

動作したが、管理画面でグループを登録しようとすると下記のエラーが出る

no such table: main.auth_user__old error
結果としてDjango 2.1.2のバグで、2.1.5以上で解消されているようでした。

結論

今回ハマったのはrequirements.txt内でDjangoのバージョンが2.1.2で指定されていたから。
migrationやり直せばOK!見たいな記事があって試したのですが、うまくいかず、フォルダごと一度すべて削除しました。

その上で、サンプルアプリのダウンロードからやり直しました。

ダウンロードしたrequirements.txtを下記のように変更

✕ Django==2.1.2 
◯ Django==2.2.6 この時点の最新を指定しました(適宜変更してください)

これで手順通りに進めると管理画面でのグループ登録も問題なくできるようになりました。

以上