[PYTHON] Flask-Erstellen Sie eine Todo-Liste mit CSRF-Maßnahmen mit WTF mit Flask

Es ist ein Memorandum. Es ist eine solide Schrift. Die Verwendung von Flask-WTF funktioniert nur, wenn Sie es in die Eingabe mit versteckt in der Vorlage einfügen ...

Code

todo.py


import os
import sqlite3
import datetime
from flask import Flask, render_template, request, redirect, url_for, send_from_directory, session
from flask_wtf.csrf import CSRFProtect
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
csrf = CSRFProtect(app)


@app.route('/')
def show_entries():
    con = sqlite3.connect('todo.db')
    c = con.cursor()
    c.execute('''CREATE TABLE IF NOT EXISTS message(data_id,msg,date_time)''')
    result = con.execute('''select * from message order by data_id desc''')

    return render_template('index.html', result=result)


@app.route('/add', methods=['GET', 'POST'])
def send():
    if request.method == 'POST':
        msg = request.form['msg']
        if not msg:
            con = sqlite3.connect('todo.db')
            c = con.cursor()
            alert = 'Bitte eingeben'
            return render_template('index.html', alert=alert)
        else:
            date_time = datetime.datetime.today()
            data_id = date_time.strftime("%Y%m%d%H%M%S")
            con = sqlite3.connect('todo.db')
            c = con.cursor()
            c.execute('INSERT INTO message VALUES (?,?,?)',(data_id,msg,date_time))
            con.commit()
            result = con.execute('''select * from message order by data_id desc''')

    return render_template('index.html', result=result)

@app.route('/delete_data', methods=['GET', 'POST'])
def delete_data():
    if request.method == 'POST':
        data_ids= request.form['action']
        con = sqlite3.connect('todo.db')
        c = con.cursor()
        query = "DELETE FROM message WHERE data_id=?"
        c.execute(query,(data_ids,))
        con.commit()
        result = con.execute('''select * from message order by data_id desc''')
    return render_template('index.html', result=result)


if __name__ == '__main__':
    app.debug = True
    app.run()

index.html


{% extends "base.html" %}
{% block content %}
<form action="{{ url_for('send') }}" method="post">
  <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
  <input type="text" name="msg" value="">
  <input type="submit" value="Senden">
</form>

{% if alert %}
<p>{{ alert}}</p>
{% endif %}

<form action="{{ url_for('delete_data') }}" method="post" enctype="multipart/form-data">
  <ul>
    {% for entry in result %}
      <li>
        <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
        <input type="checkbox" name="action" value="{{ entry[0] }}">{{ entry[1] }}:{{ entry[2] }}
      </li>
    {% endfor %}
  </ul>
  <input type="submit" value="Löschen">
</form>
{% endblock %}

base.html


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="/static/css/style.css">
    <link rel="stylesheet" href="/static/css/bootstrap.min.css">
    <title>File</title>
</head>
<body>
  <div class="container">
    <div class="row">
        {% block content %}
        {% endblock %}
    </div>
  </div>
</body>
</html>

Recommended Posts

Flask-Erstellen Sie eine Todo-Liste mit CSRF-Maßnahmen mit WTF mit Flask
Einfache Aufgabenliste, erstellt mit Python + Django
Ich möchte mit einem Knopf am Kolben übergehen
Todo-App mit Django erstellen ③ Aufgabenlistenseite erstellen
Erstellt ein Lesebuch mit PostgreSQL mit Flask
Verhalten beim Angeben einer Liste mit shell = True im Unterprozess
Ruft eine Liste der Dateien in einem Ordner mit Python ohne Pfad ab
[Python] Verwalten Sie Funktionen in einer Liste
Erstellen Sie mit Flask einen CSV-Reader
Erstellen eines Flask-Servers mit Docker
Beim Erstellen einer Matrix in einer Liste
Rufen Sie mit Python eine Liste der in der aktuellen Umgebung installierten Pakete ab
Generieren Sie eine Liste mit der Anzahl der Tage im aktuellen Monat.
Erhalten Sie eine Liste der Ergebnisse der Parallelverarbeitung in Python mit Starmap
Ich war festgefahren, eine Kolbenanwendung mit einem Reverse-Proxy dazwischen umzuleiten
Spiralbuch in Python! Python mit einem Spiralbuch! (Kapitel 14 ~)
Zeigen Sie eine Liste der Alphabete in Python 3 an
Zeichne mit PyCall ein Herz in Ruby
Machen Sie einen seltenen Gacha-Simulator mit Flask
Ändern Sie die Liste in der for-Anweisung
Erstellen Sie einen Webdienst mit Docker + Flask
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis