Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Flask Basics Character Builder Starting the Builder

Justin Carlson
Justin Carlson
12,755 Points

Method not allowed when trying to add builder route?

I have been trying to figure out what I'm doing wrong here... I even deleted my workspace and started fresh with a new template for the course and still get this error after naming the bear.

"Method Not Allowed

The method is not allowed for the requested URL."

here is what I have for code I am sure its something simple that I have just missed but I can not find it:

import json

from flask import (Flask, render_template, redirect,
                   url_for, request, make_response)

from options import DEFAULTS

app = Flask(__name__)


def get_saved_data():
    try:
        data = json.loads(request.cookies.get('character'))
    except TypeError:
        data = {}
    return data



@app.route('/')
def index():
    return render_template('index.html', saves=get_saved_data())

@app.route('/builder')
def builder():
    return render_template(
        'builder.html',
        saves=get_saved_data(),
        options=DEFAULTS
    )

@app.route('/save', methods=['POST'])
def save():
    response = make_response(redirect(url_for('builder')))
    data = get_saved_data()
    data.update(dict(request.form.items()))
    response.set_cookie('character', data)
    return response


app.run(debug=True, host='0.0.0.0', port=8000)

1 Answer

Kenneth Love
STAFF
Kenneth Love
Treehouse Guest Teacher

I have a feeling that you have a form in your HTML sending data, via POST, to either /builder or /.