Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flask Error: "Method Not Allowed The method is not allowed for the requested URL"

Tags:

python

flask

I'm getting the following error whenever I try to submit data to my Flask form:

Method Not Allowed The method is not allowed for the requested URL. 

I think the issue is in the return redirect(url_for('database')) I'm doing. I've also tried return render_template('database.html) too. I'm trying to call the database page once form entries have been submitted to the database.

Relevant parts of my code are as follows:

@app.route('/entry', methods=['GET', 'POST']) def entry_page():     if request.method == 'POST':         date = request.form['date']         title = request.form['blog_title']         post = request.form['blog_main']         post_entry = models.BlogPost(date = date, title = title, post = post)         db.session.add(post_entry)         db.session.commit()         return redirect(url_for('database'))     else:         return render_template('entry.html')  @app.route('/database')         def database():     query = []     for i in session.query(models.BlogPost):         query.append((i.title, i.post, i.date))     return render_template('database.html', query = query) 

entry.html is...

THIS IS THE BLOG ENTRY PAGE  blog: <html>     <form action='/database' method = "post">         date<input name = "date" type = "text" class="text">         title<input name = "blog_title" type = "text" class="text">         main<input name = "blog_main" type = "text" class="text">         <input type = "submit">     </form>  </html> 

and database.html...

THIS IS THE QUERY:  {{query}} 
like image 708
Suraj Kapoor Avatar asked Dec 19 '13 18:12

Suraj Kapoor


1 Answers

What is happening here is that database route does not accept any url methods.

I would try putting the url methods in the app route just like you have in the entry_page function:

@app.route('/entry', methods=['GET', 'POST']) def entry_page():     if request.method == 'POST':         date = request.form['date']         title = request.form['blog_title']         post = request.form['blog_main']         post_entry = models.BlogPost(date = date, title = title, post = post)         db.session.add(post_entry)         db.session.commit()         return redirect(url_for('database'))     else:         return render_template('entry.html')  @app.route('/database', methods=['GET', 'POST'])         def database():     query = []     for i in session.query(models.BlogPost):         query.append((i.title, i.post, i.date))     return render_template('database.html', query = query) 
like image 134
Wondercricket Avatar answered Sep 27 '22 22:09

Wondercricket