Flask Webフレームワークを使用してユーザーに質問をさせ、いくつかの特定の質問に応じて、アプリケーションはユーザーにいくつかの質問を返す必要があります。第2のウェブページ。質問に対する回答は、質問に基づいて評価され、最初のWebページに表示されます。Python Flask render_templateは、HTMLページにリダイレクトする代わりにHTMLスクリプトを返します。
model.py
### Importing Flask ###
from flask import Flask, render_template, request, session, redirect, url_for
### Initializing Flask ###
app = Flask(__name__)
@app.route('/')
def index():
return render_template('init.html')
@app.route('/handle_data', methods = ['POST', 'GET'])
def handle_data():
### User Inputs Question ###
userQuestion = request.form['userQuestion']
def model():
message = "Depends on User"
if message == "Depends on User":
return render_template('user_information.html', userQuestion = userQuestion)
else:
message = "Your answer is ABC."
return message
message = model()
return render_template('init.html', userQuestion = userQuestion, message = message)
@app.route('/user_information', methods = ['POST', 'GET'])
def user_information():
userLevel = request.form['userLevel']
userDOJ = request.form['userDOJ']
userType = request.form['userType']
message = "Answer for Eligibility."
return render_template('init.html', userLevel = userLevel, userDOJ = userDOJ, userType = userType, message = message)
if __name__ == '__main__':
app.run()
これらは私の2つのHTMLファイルです:
二user_information.html(
<!DOCTYPE html>
<html>
<head>
<title>Human Resources</title>
<!-- for-mobile-apps -->
</head>
<body>
<div class="main">
<div class="w3_agile_main_grid">
<h2>Human Resource Portal</h2>
<br>
<p>Hi</p>
<form action="{{ url_for('handle_data') }}" method="post" class="agile_form">
<input type="text" name="userQuestion" placeholder="Ask your question..." required="">
<input type="submit" value="Submit">
</form>
<p>{{ message }}</p>
</div>
</div>
</body>
</html>
(初期のWebページ) init.htmlウェブページ)
スクリプトを実行して質問を入力すると、自分の答えとしてuser_information.htmlのHTMLコードが得られますが、これは私が望むものではありません。
出力リレー私は、[送信]をクリックした後:私は、[送信]をクリックした後 https://ibb.co/cwhRpk
期待出力を: https://ibb.co/c7CFh5
を私はモデルを削除する場合)(所望の出力を得る構成するが、そのことができます私の実際のアプリケーションでは、異なるパラメータでmodel()を何度も呼び出さなければならないので、私のコードは非効率になります。
私はどのようなアプローチをとるべきですか?私は完全にこの部分に立ち往生しています。ありがとう、どんな助けもありがとう!
質問とは無関係ですが、ハンドラ内に異なるテンプレートをレンダリングするのではなく、 'user_information()'ハンドラにリダイレクトする方が論理的だと思います。 – Juggernaut
@Juggernaut値エラーを発生させる - View関数は応答を返しませんでした。 –