59750


**実現したいこと**  
フォームに入力した文字列がデータベースに格納され、HTMLのページに反映されるプログラムをPython・FlaskとSQLAlchemyを使って書いています。

**困っていること**

[code]

    $ FLASK_APP=app.py FLASK_DEBUG=true flask run
    
[/code]

として実行すると以下のエラーが表示され、画面が読み込まれません。  
解決方法が分からず困っています。

エラー文（書いたプログラム以外のファイルに関する、実行後レスポンスの記述は省略しています）

[code]

    File "/Users/username/Desktop/app.py", line 18, in <module>
    TypeError: __init__() got an unexpected keyword argument 'method'
    
[/code]

line18というと以下に当たるのですが、どのように修正すれば良いのでしょうか。

[code]

    @app.route('/todos/create', method=['POST'])
    
[/code]

**実行しているコード**  
index.html

[code]

    <html>
    <head>
        <title>Todo App</title>
    </head>
    <body>
        <form method="post" action="/todos/create">
            <input type= "text" name="description" />
            <input type= "submit" value="Create" />
        </form>
        <ul>
            {% for d in data %}
            <li>{{d.description}}</li>
            {% endfor %}
        </ul>
    </body>
    </html>
    
[/code]

app.py

[code]

    from flask import Flask, render_template, request, redirect, url_for
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'postgres://username@localhost:5432/todoapp'
    db = SQLAlchemy(app)
    
    class Todo(db.Model):
        __tablename__ = 'todos'
        id = db.Column(db.Integer, primary_key=True)
        description = db.Column(db.String(), nullable=False)
    
        def __repr__(self):
            return f'<Todo {self.id}{self.description}>'
    
    db.create_all()
    
    @app.route('/todos/create', method=['POST'])
    def create_todo():
      description = request.form.get('description', '')
      todo = Todo(description=description)
      db.session.add(todo)
      db.session.commit()
      return redirect(url_for('index'))
    
    @app.route('/')
    def index():
        return render_template('index.html', data=Todo.query.all())
    
[/code]

**実行環境**  
Flask 1.1.1  
sqlalchemy 1.3.10


CC BY-SA 4.0
2019-10-16T15:22:12.883
59749
2019-10-16T21:41:17.640
question
python python3 flask sqlalchemy url-routing
Flaskを使ったルーティングがうまくいかずエラーが出る


気づきにくいミスだと思いますが、`method`ではなく`methods`です。

<https://flask.palletsprojects.com/en/1.1.x/api/#url-route-registrations>


CC BY-SA 4.0
2019-10-16T21:41:17.640
59750
2019-10-16T21:41:17.640
32959
59749
answer