【PythonとFlask】フォーム作成

どうもこんばんは、最近腰が痛いあしかぺんぎんです。

前回のプログラミングでは、サイトに「Hello World」を表示させるのみのプログラムを作成しました。

ゆくゆくは文字を表示させるだけではなく、もっと使えるWebアプリを作成することを目指しています。

そこで、今回はFlaskと呼ばれるPythonのモジュールを用いて、文字を入力してその文字を取得し、それを表示させるフォームを作成しようと四苦八苦したので、そのことについてまとめたいと思います。

Flaskのインストール

Flaskについて

今回はPythonのモジュールであるFlaskと呼ばれるものを使ってフォームの作成を行うこととしました。

Flaskとは
  • Python上で動く小規模なWebアプリケーションフレームワーク
  • 手軽にWebアプリケーションが開発できるようにパッケージがされている
  • 「Python Flask」で調べるといろんな記事があり、初心者にもとっつきやすい

同じPythonのWebフレームワークとして有名なものにDjangoと呼ばれるものがありますが、これにはいろんな機能が盛り込まれており、どんなアプリでも作成できるように作られているみたいです。逆にいえば本格的な開発を目的とした玄人向けといった感じでしょうか。

もちろんFlaskも必要最低限の機能を有しているだけと言いつつも、拡張させることでいろんなアプリを開発することができるみたいです。

まあ今回はお試しということでFlaskを使うことにしました。

レンタルサーバへのFlaskのインストール

普通にローカル環境でPythonをインストールしているだけだったらFlaskをインストールするのは簡単で、

とコマンドプロンプトあたりに入れるとインストールされるんですが、今回はレンタルサーバに導入したいので、一筋縄では行かなかったです

まずはSSHソフトと呼ばれるソフトを入れます。SSH(Secure Shell)安全にリモートコンピュータを通信を行うためのソフトみたいです。ようは自分のパソコンをコマンドプロンプトで操作するみたいなイメージでしょうか。

SSHの導入や使い方については各レンタルサーバに記載があります。

私は数あるSSHのうちからPuTTYと呼ばれるものをインストールしました。

Pythonのモジュールのインストール方法はこちらのサイトを参考にさせていただきました。

まずはインストールに重要なpipのインストールをします。これをしないとたぶんかなりインストールがめんどくさくなります。

pipをインストールしたことがある人ならわかると思いますが、pipを使えば、

と入力するだけで必要なモジュールをインストールすることができます。このpipをインストールするためには以下ように入力します。

curlコマンドはネットワーク経由のファイルダウンロードやアップロードを行うためのコマンドです。デフォルトで使うことができました。

この後、

と入力すればpipのインストールはできました。ただし、このままではPATHを通していないので、自由に使うことはできません。そこで以下のように入力します。

これで、ようやくpipが使えるようになったと思います。

PATHとは

PATHとはインストールしたモジュールを簡単に使うことができるようにするものです。

例えば下記のコマンドは、pipがbinにインストールされたときにpipを使いたいとき、PATHを通したもの(上)とPATHを通していないもの(下)を表していますが、どちらも同様の結果が帰ってきます。

つまりPATHをとおしたものはどこからでもアクセスして使用することができるようになるということですね。

pipが使えるか確認するためにはいかのように

と入力したときに、以下のようにインストール済みのモジュールが表示されれば良いと思います。

ここまできてやっとFlaskのインストールです。長かった😫。以下のように入力してFlaskをインストールしました。

–userは~/.local/へインストールするときに使うようで、他にもインストール先を指定してインストールする方法があります。このあたりは色々試していて良くわかっていなかったので、たぶんこれで行けると思いますが、できなかった方はこちら等を参考にされて下さい。

フォームの作成

ここまでくればFlaskを使うことができるため、いよいよフォームを作成していきます。といっても初心者に1から作ることはできないため、こちらのページを参考に入力した結果を表示させるフォームを作成することにしました。

ただし、ここでも鬼門が!!以下のようにサイトの真似をしファイルを作りました。

詳しいそれぞれの言語や関数の意味は理解していませんが、形にはなりました。

新しく出てきた「form.html」等のHTMLファイルはPythonとは異なるプログラミング言語になります。HTMLはウェブを作成するために開発された言語で、現在インターネットで公開されているほとんどのWebページはこのHTMLを用いて作成されているみたいです。 ページのアレンジをする場面になったときに詳しく学んでいく予定です。

・・・が、結果はエラー!どうやらレンタルサーバではそのまま実行することができない模様。理由は初心者にはわかりませんが、権限の問題とかなんとか。

色々調べた結果ありました!どうやらcgiファイルを用いて.htaccessでリダイレクトさせて実行するらしいです。ん~わからん単語がめっちゃ出てくる!

CGIはCommon Gateway Interfaceの略でWebサーバ上でプログラムを使って処理した結果を表示させる機能のことみたいです。主にはPerlという言語を使うみたいですが、Pythonにもcgiモジュールというものがあるみたいでそれを用います。

.htaccessは「Apache」と呼ばれるサーバソフトウェアを制御する設定ファイルの1つで、たとえば、サーバの移転をいたので、新しいページに転送「リダイレクト」したいとき携帯電話以外からアクセスできないようにしたい等の設定を行うことができるみたいです。私のレンタルサーバはApacheを用いているみたいでした。

たぶんですが、Flaskを使うにはCGIを使ってWebアプリを動かし、そのときに.htaccessで一部アクセスの設定が必要といったところだと思います。

そこで以下の2つのファイル(index.cgi.htaccess)を追加し、「test.py」と「form.html」を書き換えます。

ここで注意するところは「form.html」の3行目のaction = “/dest/src/confirm”の部分です。.htaccessを設定したせいか、URLの設定を注意しないとうまくページが表示されませんでした。

よ~し、これでURLにアクセスすれば、、、

おおおおおおおおおおおお、うまく表示されています。

と一息ついたのもつかの間、適当に文字を入力してsubmitすると、

エラー画面が!😫

挫折しそうになるもどこがまずいのかプログラムを見直すことにしました。

いろいろ試していると「test.py」を以下のように修正して再度URLにアクセスする。

confirmが実行されたときに入力した値が正しく取得できているか確かめることに、すると

どうやらresultに入力した値は取得されているようです。つまりその後の処理に問題があるということですね。

色々ネット探していましたが、ついにそれっぽい書き込みを発見!

確かこのレンタルサーバのPythonのバージョンは3.4でした。これみた瞬間に脳汁が飛び出ました。

早速「comfirm.html」の中身を上図の通りに修正し再度URLからsubmitしてみる。すると、


キタ━━━━(゚∀゚)━━━━!!

ん~やっぱりプログラミングはむずかしいですね。

この僅かな書き方の違いに何時間も手こずってしまうとは。

何はともあれ思っていたフォームを作成することができました。

まとめ

今回はかなり長い戦いでした。

ますますプログラミングの奥深さを知ることとなりました。

とりあえずプログラミング初心者がなんとかすればフォームを作成することができることがわかりました。

今後はこのWebページを拡張していくか他のことにチャレンジするかわかりませんが、勉強を進めていきたいと思います。今後ともよろしくお願いいたします。

作成したページはこちら

コメント

タイトルとURLをコピーしました