■SQLite +Flask
→sqlite3.OperationalError: no such table: to_do というerrorがでてうまく起動せず。
書いたとおりにやったのに。
↓
↓この内容でならうまくいけました。
(1)app.pyを実行して、(2)Web(http://127.0.0.1:5000)でアクセスします。
↓DB Browserで出来上がったデータベースを見るとちゃんと登録できてました。
↓あとはレイアウトできるようにして、
↓<Edit>があればいうことないのですが。
↓
↓
■app.py
from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.todo'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
class ToDo(db.Model):
id = db.Column(db.Integer, primary_key=True)
todo = db.Column(db.String(128), nullable=False)
@app.route('/')
def index():
data = ToDo.query.all()
return render_template('todo.html',data=data)
@app.route('/add', methods=['POST'])
def add():
todo = request.form['todo']
new_todo = ToDo(todo=todo)
db.session.add(new_todo)
db.session.commit()
return redirect(url_for('index'))
@app.route('/del_todo/<int:id>')
def del_todo(id):
del_data = ToDo.query.filter_by(id=id).first()
db.session.delete(del_data)
db.session.commit()
return redirect(url_for('index'))
if __name__ == '__main__':
app.run()
■todo.html
<!doctype html>
<html>
<head>
<title>todo.html</title>
</head>
<body>
<h1>Todo Application</h1>
<form action="/add" method="POST">
<input type="text" name="todo" placeholder="input todo!!"/>
<input type="submit" value="Add"/>
</form>
<br>
{% for d in data %}
<p>{{d.id}} : {{d.todo}}</p>
<a href="/del_todo/{{ d.id }}">[ delete ]</a>
{% endfor %}
</body>
</html>