☆☆ 新着記事 ☆☆

2019年2月8日金曜日

FLASKのRouting記述方法を忘れない為にメモ

* FLASKをサーバー環境で動かすときには、Confファイルでのバーチャルホストの書き方と、Flask APPでの Routeの記載の仕方、htmlのactionの書き方が整合をとれていないと失敗するので、個人メモです。結構、苦労する。

VirtualHost
 <VirtualHost *:80>
   ServerName mossymob.tk
   DocumentRoot /var/www/html
   WSGIDaemonProcess firstapp user=apache group=apache python-home=/home/venv_env/python37
   WSGIScriptAlias /firstapp /var/www/html/firstapp/app.wsgi
                <Directory /var/www/html/firstapp>
                WSGIProcessGroup firstapp
                WSGIApplicationGroup %{GLOBAL}
                Require all granted
                </Directory>
   WSGIDaemonProcess secondapp user=apache group=apache python-home=/home/venv_env/python37
   WSGIScriptAlias /secondapp /var/www/html/secondapp/app.wsgi
                <Directory /var/www/html/secondapp>
                WSGIProcessGroup secondapp
                WSGIApplicationGroup %{GLOBAL}
                Require all granted
                </Directory>

*WSGIScript Aliasの第一引数は、app.wsgiファイルを配置したファイルまでのディレクトリを、ドキュメント・ディレクトリ配下の部分を書く。

1. app.py

@app.route('/python', methods=['GET', 'POST']) <- インデックスルートだけだとセッションが変わらない。
def index():
   if int(session["current_question"]) in xxxxxx
             redirect(url_for('index'))
             return render_template("end_summary.html")
  return render_template('main.html')

@app.route('/check',methods=['GET','POST'])
def check_answer():

 return render_template('check.html')




2. main.html

<button type="submit"  formaction="/firstapp/python" >Answer</button>
<button type="submit"  formaction="/firstapp/check" >Hint</button>


*PCのバーチャル環境でテストしているように、通常の/pythonのようにTargetのrouteの第一引数だけ記述すると、ボタンをクリックするとjump先のURLが、ドキュメント・ルート/pyhonとなってしまい、404未検出というエラーになる。必ず、ドキュメントルート以下の全ディレクトリ・ルートを記載する。

3.check.html
<input type='submit' value='問題に戻る' formaction="/firstapp//python" /> 

4. end_summary.html
<button type="submit" id="r7" name='startover' formaction="/firstapp//python" class="btn btn-outline-success btn-sm m-1" value='shuffle' >


 
 
全ての処理は、

/firstapp/python で処理される。

0 件のコメント:

コメントを投稿