【Python】掲示板に「削除機能」を追加してみた①
以前作成した「Flask掲示板」に、投稿を削除する機能を追加してみました。
「Flask-WTF」と「SQLAlchemy」を使ったものです。
今回は、コードと機能を紹介したいと思います。
掲示板に「削除機能」を追加してみた
Flaskで掲示板を作成した記事はこちら。
コードを見てみよう
ではコードを置いておきます。
from flask import Flask, request, render_template, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm
from wtforms import StringField, HiddenField, SubmitField
from wtforms.validators import InputRequired, Length
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
SQLALCHEMY_TRACK_MODIFICATIONS = False
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db_uri = 'sqlite:///test.db'
app.config['SQLALCHEMY_DATABASE_URI'] = db_uri
db = SQLAlchemy(app)
class Message(db.Model):
id_ = db.Column(db.Integer, primary_key=True, autoincrement=True)
message = db.Column(db.Text())
def __init__(self, message):
self.message = message
try:
db.create_all()
except Exception as e:
print(e.args)
pass
class Delete(FlaskForm):
id_ = HiddenField('hidden')
submit = SubmitField('削除')
class Insert(FlaskForm):
message = StringField('コメント', validators=[InputRequired(),Length(max=15,message="投稿は15文字以下で")])
submit = SubmitField('投稿')
@app.route("/", methods=['GET','POST'])
def index():
delete = Delete()
insert = Insert()
if insert.validate_on_submit():
a = Message(message=insert.message.data)
db.session.add(a)
db.session.commit()
return redirect(url_for('index'))
elif delete.validate_on_submit():
b = Message.query.get(delete.id_.data)
db.session.delete(b)
db.session.commit()
return redirect(url_for('index'))
else:
text = Message.query.all()
return render_template('index.html',lines=text,insert=insert,delete=delete)
if __name__ == "__main__":
app.run(host="localhost", debug=True)
試行錯誤の連続でした。。。
機能を見てみよう
「ANDoblog」と投稿しています。
それを追加した削除機能で、削除していますね。
まとめ
今回は、コードの紹介と「削除機能」を見ていただきました。
今まで学んできた「Flask-WTF」と「SQLAlchemy」を使ったものです。
記事にしていますので是非参考にしてみてください。
それではまた。