首页 > 解决方案 > Flask 使用单选按钮渲染 html

问题描述

我是 flask 的新手,试图做一些小的 poc uisng 单选按钮。请在下面帮助我。建议我的方法是否错误

  1. 在主页 - 我有 3 个带有值的单选按钮(ENG、MEDICINE、MBA)
  2. 如果选择了 MBA 单选按钮,我可以呈现 MBA.HTML(下一页),它再次具有 3 个单选按钮(人力资源、财务、营销)。
  3. 在选择 HR - 单选按钮无法呈现我应该获得用户输入的 HR html 页面(它说 405 模块未找到)

下面的代码有效,它呈现为 MBA html

@app.route('/', methods=['GET', 'POST'])
def home():
    if request.method == 'POST':
        selectedValue = request.form['r1']
        if selectedValue == 'MBA':
            return redirect(url_for('MBA'))
        if selectedValue == 'ENG':
            return redirect(url_for('ENG'))
        if selectedValue == 'MEDICINE':
            return redirect(url_for('MEDICINE'))
    return render_template('index.html')

--inside MBA app route,检查是否在 HR 中选择了单选按钮,渲染为 HR html

@app.route('/MBA')
def MBA():
    return render_template('MBA_Home.html')
    if request.method == 'POST':
        aws_service = request.form['options']
        if aws_service == 'HR':
            return redirect(url_for('HR'))
home.html

<html>
<body>
<h2>
CHOOSE YOUR COURSE
</h2>
<font size= 4 face="verdana" color=#112244>
<form method = 'POST'>
<input type="radio" name="r1" value="MBA" >MBA<br>
<input type="radio" name="r1" value="ENG" >ENG<br>
<input type="radio" name="r1" value="MEDICINE" >MEDICINE<br>
<input type="submit" name="b1" value="Continue">
</form>
</body>
</html>
MBA.html:
<html>
<body>
<h2>
CHOOSE YOUR STREAM
</h2>
<font size= 4 face="verdana" color=#112244>
<form method = 'POST'>
<input type="radio" name="options" id="HR" value="HR"> HR </input><br>
<input type="radio" name="options" id="FINANCE" value="FINANCE"> FINANCE </input><br>
<input type="radio" name="options" id="MARKETING" value="MARKETING"> MARKETING </input><br>
<input type="submit" name="b1" value="Continue">

标签: htmlformsflask

解决方案


第一的; 您没有为您的 MBA 路线指定方法,就像 home() 函数一样,您需要指定您的方法:

@users.route('/MBA', methods=['GET', 'POST'])
def MBA():

之后,您需要在函数结束时返回您的渲染模板:

def MBA():
    if request.method == 'POST':
        aws_service = request.form['options']
        if aws_service == 'HR':
            return redirect(url_for('HR'))
    return render_template('MBA.html')

最后,我们看不到您的 HR 功能,能否请您也写下该功能以便我帮助您?


推荐阅读