2016-09-02 32 views
1

私はPythonフラスコアプリケーションを構築しようとしていますが、フォームデータをPythonメソッドに送信しようとすると問題が発生します。メソッドが許可されていません - 要求されたURLに対してメソッドが許可されていません

サーバーがスローしている問題は、「メソッドが許可されていません」です。

HTMLコード

<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方法あなただけのmethodsリスト内の 'POST' を指定しているので、メソッドが許可されていません

@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) 

答えて

3

(submit_article) 。しかし、このURLにアクセスしようとするたびに、「GET」リクエストが送信されます。ボタンをクリックすると 'POST'リクエストが送信されますが、最初は 'GET'リクエストを介してページにアクセスします。

methods=['POST']methods=['POST', 'GET']に置き換えると、問題が解決されます。

+0

ありがとう@ハッサンMehmood、それは働いた。 :) – maheshkumar

関連する問題