2023年8月14日月曜日

Python webframework Djangoをお勉強してみる

最近の世の中の流行りに押されて、pythonを少々お勉強しています。「予測に生かす統計モデリングの基本」とか「Pythonによる統計学入門」「ベイズ統計入門」とかベイズ統計と一緒にpythonも復習と思ったのですが、ベイズ統計の方がムズくて頓挫。 

では、pythonでweb書いてみようとドキュメントに従って書いてみました。 (今、自宅近辺の温度湿度を表示させるweb appがphpなので、将来的にpythonにしようかな?と思い、その為の予習のつもりで勉強しています。 データのグラフ化のライブラリpythonにも対応しているので、少しpythonで書き換えれば動くものが作れるはず!!)

pythonではDjangoってweb frameworkがあるようなので、このドキュメントに従って、サンプルアプリを作ってみました。 DjangoにはDBとしてsqlite3が付いていますが、将来実装する時の手間を考え、既に使用しているpostgresを使う事にしました。 

 0)Pythonの開発用仮想環境を構築する 

  取り敢えず、application_environmentというフォルダを作って、ここに開発環境をココできての説明に従い作ってみました。python -m venv application_environmentでapplication_environmentが出来、source ./bin/activateでこの環境を使った開発が出来るようになるみたいです。(python開発関連の165 directories, 1357 filesが出来ていました)

  このディレクトリで、 pip install djangoとして、djangoをインストール

    更に、django-admin startproject mysite でmysiteというフォルダを作りこのフォルダの中で作業をしました。 この作業でmysite配下に左のようなファイル構造が出来上がります。 これ以降はmanage.pyで色々な作業が出来るみたいです。


1)DjangoでPostgreSQLを使えるようにする。

  ここの説明に従いpostgreSQLにDjangouserを作成して、djangoからのアクセスが出来るようにしてみましたが、

    $python manage.py migrations;  python manage.py migrate


で失敗して、うまくdatabaseが作成できていませんでしたので、PgAdmin4 v7でpostgresqlの中を覗いて見た所djangouserに create database権限が与えられていないようなので、これを設定して無事djangoからpostgresqlに接続設定できるようになりました。

 

 

 

2)Django のtutorialに従い簡単なアプリを作成してみました。

  1~6までをまじめにフォローしながら、逐一実行、確認してゆきました。DBの作成がmodels.pyにDBの仕様を書き、python manage.py migrateで行うと、関連する テーブルが自動で作成されていますが、QuestionとChoiceの二つのテーブル作成に対して、全部で12のテーブルが作成されていました。(うーん、何に使うんだろう?) 

       夫々の詳細な内容はtutorialを参照してください。

  データベースが出来た所で、python manage.py shellでpythonのコマンド入力でデータベースの内容を参照したり、書き換えたりすることが出来るのは、とても面白い機能ですね。   

python manage.py runserver を適当な窓で実行してブラウザで当該ページにアクセスしてみると左の様にサーバログが表示され、テスト環境でのチェックがスムーズに出来そうです。 

また、on the flyでファイルを書き換えても、書き換えた内容が即座に反映されている(一部、そうでない場合があったような気がしますが、??)のと、書き換えたファイルにエラーがあるとログにエラー内容が表示されるので、小さな修正などが簡単に出来そうです。

 

右では、赤で囲った部分から、typoエラーが示されており、これを修正してファイルを上書きすると、そのままサーバがチェックしてくれて、今度は待ち受け状態になって起動しています。

 

また、作成されるファイルシステムの中にtests.pyがあり、ココに必要なソースを書いておけば、いつでも走らせて検証することが出来る(初めから検証プログラムが書かれることを前提としている)のは非常に優れている(というか、今様)な仕様だと思います。

ま、WEB Frameworkってどれも、ファイル構造が大きく、幾つも似たようんファイルが作られるので、鬱陶しいと思っていますが、djangoも同じですので、慣れるより仕方ないですね。

tutorialに従って作成したpollsの最終的なファイル構造は下の様になっていました。

このうち弄っているファイルは、

models.py, 

tests.py, 

urls.py, 

views.py,と 

static/polls/style.css, 

static/polls/images/xxx, 

templates/polls/(detail,index,results).html

です。

0 件のコメント:

アンテナ切り替えの自動化 (続き)

 調子よく動いていると思っていたら、インジケータのLEDが次々と点かなくなってゆく、、、。 不精して、出力端子(14Vのon/off)にLEDを直列抵抗と入れていたのですが、これではダメっぽい。 LEDが死んでいる。 では、という事でFETのスイッチを入れて、ゲート電圧で検出して...