65

我刚刚开始学习 Flask,我正在尝试创建一个允许POST方法的表单。

这是我的方法:

@app.route('/template', methods=['GET', 'POST'])
def template():
    if request.method == 'POST':
        return("Hello")
    return render_template('index.html')

我的index.html

<html>

<head>
  <title> Title </title>
</head>

<body>
  Enter Python to execute:
  <form action="/" method="post">
    <input type="text" name="expression" />
    <input type="submit" value="Execute" />
  </form>
</body>

</html>

加载表单(在收到GET时渲染它)工作正常。但是,当我单击提交按钮时,我得到一个POST 405 error Method Not Allowed.

为什么不显示“你好”

4

3 回答 3

49

您的表单正在提交到/路由方法的时间,/template除非这是一个错字,您应该调整表单的action属性以指向template视图:action="{{ url_for('template') }}"

于 2012-08-29T13:57:24.707 回答
16

代替:

 <form action="/" method="post">

和:

 <form action="{{ url_for('template') }}" method="post">
于 2012-08-29T14:03:01.790 回答
6

如果省略该action属性,表单将发布到当前 URL。

代替:

<form action="/" method="post">

和:

<form method="post">
于 2014-02-15T11:28:01.263 回答