flask-blog/blog/views/entries.py
2025-03-02 15:29:48 +09:00

59 lines
1.7 KiB
Python

from flask import render_template, redirect, url_for, request, flash
from blog import app, db
from blog.models.entries import Entry
from blog.views.auth import login_required
@app.route("/")
@login_required
def show_entries():
entries = Entry.query.order_by(Entry.id.desc()).all()
return render_template('entries/index.html', entries=entries)
@app.route("/entries/new", methods=['GET'])
@login_required
def new_entry():
return render_template('entries/new.html')
@app.route("/entries", methods=["POST"])
@login_required
def add_entry():
entry = Entry(
title=request.form['title'],
text=request.form['text']
)
db.session.add(entry)
db.session.commit()
flash('新しく記事が作成されました')
return redirect(url_for("show_entries"))
@app.route("/entries/<int:id>", methods=["GET"])
@login_required
def show_entry(id):
entry = Entry.query.get(id)
return render_template("entries/show.html", entry=entry)
@app.route('/entries/<int:id>/edit', methods=['GET'])
@login_required
def edit_entry(id):
entry = Entry.query.get(id)
return render_template('entries/edit.html', entry=entry)
@app.route("/entries/<int:id>/update", methods=['POST'])
@login_required
def update_entry(id):
entry = Entry.query.get(id)
entry.title = request.form['title']
entry.text = request.form['text']
db.session.merge(entry)
db.session.commit()
flash('記事が更新されました')
return redirect(url_for('show_entries'))
@app.route("/entries/<int:id>/delete", methods=["POST"])
@login_required
def delete_entry(id):
entry = Entry.query.get(id)
db.session.delete(entry)
db.session.commit()
flash('記事が削除されました')
return redirect(url_for("show_entries"))