方法不允许 - 请求的URL不允许使用该方法

时间:2016-09-02 10:05:08

标签: python flask flask-wtforms flask-restful

我正在尝试构建一个python flask应用程序,但是当我尝试将表单数据提交给python方法时,我遇到了一个问题。

服务器抛出的问题是"方法不允许"。

  

HTML CODE

<h1>Submit the Link</h1>
    <form action="/submit_article" method="POST" name="form">
        <div class="col-md-4 col-md-offset-4">
            {{ form.hidden_tag() }}
            <div class="form-group">
                <label class="control-label" for="description">Name</label>
                {{ form.description }}
            </div>
            <div class="form-group">
                <label class="control-label" for="link">Link</label>
                {{ form.link }}
            </div>
            <button class="btn btn-default" type="submit">Submit</button>
        </div>
    </form>
  

PYTHON METHOD(submit_article)

@app.route('/submit_article', methods=['POST'])
def submit_article():
  form = UploadForm()
  if request.method == 'POST':
    data = {
        "_id": form.link.data,
        "description": form.description.data,
        "user": current_user.username,
        "time": datetime.datetime.now()
    }

    try:
        if((app.config['NEWS_COLLECTION'].insert(data))):
            flash("Link added successfully", category="success")
            return redirect(request.args.get("new") or url_for("new"))

    except DuplicateKeyError:
        flash("Article link already exists in the Database", category="error")
        return render_template("submit_article.html")

  return render_template('submit_article.html', title='login', form=form)

1 个答案:

答案 0 :(得分:5)

不允许使用此方法,因为您只指定了&#39; POST&#39;在您的methods列表中。但是,只要您尝试访问此网址,它就会发送“GET&#39;请求。 &#39; POST&#39;当您点击按钮时会发送请求,但最初它会通过&#39; GET&#39;来访问该页面。请求。

所以将methods=['POST']替换为methods=['POST', 'GET'],您的问题就会得到解决。