[PYTHON] Flask-Créer une liste Todo avec des mesures CSRF avec WTF avec Flask

C'est un mémorandum. C'est une écriture solide. Comment utiliser Flask-WTF ne fonctionne que si vous le mettez dans l'entrée avec caché dans le modèle ...

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 = 'Entrez s'il vous plait'
            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="Envoyer">
</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="Effacer">
</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-Créer une liste Todo avec des mesures CSRF avec WTF avec Flask
Liste de tâches simple créée avec Python + Django
Je veux faire la transition avec un bouton sur le ballon
Créer une application Todo avec Django ③ Créer une page de liste de tâches
Création d'un livre de lecture lié à PostgreSQL avec Flask
Comportement en donnant une liste avec shell = True dans le sous-processus
Obtenez une liste de fichiers dans un dossier avec python sans chemin
[python] Gérer les fonctions dans une liste
Créer un lecteur CSV avec Flask
Créer un serveur Flask avec Docker
Lors de la création d'une matrice dans une liste
Obtenez une liste des packages installés dans l'environnement actuel avec python
Générez une liste contenant le nombre de jours du mois en cours.
Recevez une liste des résultats du traitement parallèle en Python avec starmap
Je suis resté coincé dans la redirection d'une application flask avec un proxy inverse entre les deux
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Afficher une liste d'alphabets en Python 3
Dessinez un cœur en rubis avec PyCall
Créez un simulateur de gacha rare avec Flask
Changer la liste dans l'instruction for
Créer un service Web avec Docker + Flask
Comment obtenir une liste de fichiers dans le même répertoire avec python