Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

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 /.