実現したいこと
Flaskを用いてlolipopサーバ上にWebアプリケーションを作っています。
テキストボックスに値を入力し、submitするボタンを押すと入力された文字列をそのまま表示するだけのページを
〇〇.com/flask-test/
上に作ろうとしています。
こんなページで、repeatボタンを押すとテキストボックス内の文字列で'hoge'が置き換えられるものを作ろうとしました。
前提
◯◯.com/
┣ index.html
┗ flask-test/
flask-test/
┣app.py
┣.htaccess
┣index.cgi
┗templates/
. ┗render.html
発生している問題・エラーメッセージ
〇〇.com/flask-test/
にアクセスすることで、テキストボックスとボタン(と初期文字列)が表示されます。
テキストボックスに何か入力し(あるいはしなくても)、ボタンを押下すると
〇〇.com/
に飛んでしまいます。(そしてこのアプリとは無関係のindex.htmlが表示されます)
意図する動作としては、
〇〇.com/flask-test/
のまま文字列が更新されることです。
該当のソースコード
app.py
python
1from flask import Flask , render_template, request 2 3app = Flask(__name__) 4 5@app.route('/') 6def index(): 7 return render_template('render.html', strng='hoge') 8 9@app.route('/', methods=["post"]) 10def post(): 11 return render_template('render.html', strng=request.form["repeat"]) 12 13if __name__ == '__main__': 14 app.run(debug=True)
render.html
HTML
1<!DOCTYPE html> 2<html> 3 <head> 4 </head> 5 <body> 6 7 <form action="/" method="post"> 8 <input type="text" id="repeat" name="repeat"> 9 <input type="submit" value="repeat"> 10 </form> 11 <p>{{strng}}</p> 12 13 </body> 14</html>
index.cgi
python
1#!/usr/local/bin/python3 2from wsgiref.handlers import CGIHandler 3from app import app 4CGIHandler().run(app)
.htaccess
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /flask-test/index.cgi/$1 [QSA,L]
試したこと
routeの引数を変える
python
1@app.route('/flask-test/', methods=["post"])
→案の定効果なし...
https://teratail.com/questions/323619 やそのリンク先https://qiita.com/ninoko1995/items/8b01fd02bada3a2fa794 のようにindex.cgiを書き換える。
→status 200が表示されたりHTMLの内容が2つ表示されたりした(よく分かりません)が、ボタンを押すと一つ上のディレクトリに飛ばされるという問題は解決せず。
補足情報
https://dattesar.com/lolipop-pip-flask/ を参考にしました。
このURLに記載の手順はできましたが、動的なページを作ろうとすると上記のように一つ上のページに飛ばされてしまった、という次第です。
回答1件
あなたの回答
tips
プレビュー