Application de blog Flask

FlaskFlaskBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons créer une application de blog à l'aide de Flask, un populaire framework web en Python. Cette application affichera tous les articles de blog, permettra aux utilisateurs connectés de créer des articles et laissera aux auteurs la possibilité d'éditer ou de supprimer leurs propres articles.

Note : Vous devez créer le fichier de code vous-même et l'exécuter dans l'environnement. Vous pouvez prévisualiser l'état du service Flask sur Web 5000.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL flask(("Flask")) -.-> flask/DataHandlingGroup(["Data Handling"]) flask(("Flask")) -.-> flask/CoreConceptsGroup(["Core Concepts"]) flask(("Flask")) -.-> flask/DevelopmentToolsGroup(["Development Tools"]) flask/DataHandlingGroup -.-> flask/incoming_request_data("Incoming Request Data") flask/DataHandlingGroup -.-> flask/response_objects("Response Objects") flask/CoreConceptsGroup -.-> flask/application_object("Application Object") flask/CoreConceptsGroup -.-> flask/sessions("Sessions") flask/CoreConceptsGroup -.-> flask/session_interface("Session Interface") flask/CoreConceptsGroup -.-> flask/class_based_views("Class-Based Views") flask/CoreConceptsGroup -.-> flask/useful_internals("Useful Internals") flask/DevelopmentToolsGroup -.-> flask/blueprint_objects("Blueprint Objects") flask/DevelopmentToolsGroup -.-> flask/command_line_interface("Command Line Interface") subgraph Lab Skills flask/incoming_request_data -.-> lab-136340{{"Application de blog Flask"}} flask/response_objects -.-> lab-136340{{"Application de blog Flask"}} flask/application_object -.-> lab-136340{{"Application de blog Flask"}} flask/sessions -.-> lab-136340{{"Application de blog Flask"}} flask/session_interface -.-> lab-136340{{"Application de blog Flask"}} flask/class_based_views -.-> lab-136340{{"Application de blog Flask"}} flask/useful_internals -.-> lab-136340{{"Application de blog Flask"}} flask/blueprint_objects -.-> lab-136340{{"Application de blog Flask"}} flask/command_line_interface -.-> lab-136340{{"Application de blog Flask"}} end

Définir un Blueprint

Tout d'abord, nous allons définir un blueprint pour notre blog. Un blueprint est un moyen d'organiser un groupe de vues et d'autres codes liés.

## flaskr/blog.py

from flask import Blueprint, flash, g, redirect, render_template, request, url_for
from werkzeug.exceptions import abort

from flaskr.auth import login_required
from flaskr.db import get_db

## Le Blueprint porte le nom de 'blog'. Il est défini dans le même fichier.
## Le blueprint doit savoir où il est défini, donc __name__ est passé en tant que deuxième argument.
bp = Blueprint('blog', __name__)

Enregistrer le Blueprint

Ensuite, nous allons enregistrer le blueprint avec notre application.

## flaskr/__init__.py

def create_app():
    app =...
    ## code existant omis

    ## importer et enregistrer le blueprint à partir de la fabrique en utilisant app.register_blueprint()
    from. import blog
    app.register_blueprint(blog.bp)
    app.add_url_rule('/', endpoint='index')

    return app

Créer l'index du blog

Maintenant, créons une vue d'index pour afficher tous les articles de blog. Nous utiliserons une jointure SQL (JOIN) pour inclure les informations sur l'auteur à partir de la table user dans nos résultats.

## flaskr/blog.py

@bp.route('/')
def index():
    db = get_db()
    posts = db.execute(
        'SELECT p.id, title, body, created, author_id, username'
        ' FROM post p JOIN user u ON p.author_id = u.id'
        ' ORDER BY created DESC'
    ).fetchall()
    return render_template('blog/index.html', posts=posts)

Création d'un article

Ensuite, nous allons créer une vue qui permet aux utilisateurs connectés de créer de nouveaux articles de blog.

## flaskr/blog.py

@bp.route('/create', methods=('GET', 'POST'))
@login_required
def create():
    if request.method == 'POST':
        title = request.form['title']
        body = request.form['body']
        error = None

        if not title:
            error = 'Le titre est requis.'

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute(
                'INSERT INTO post (title, body, author_id)'
                ' VALUES (?,?,?)',
                (title, body, g.user['id'])
            )
            db.commit()
            return redirect(url_for('blog.index'))

    return render_template('blog/create.html')

Mise à jour d'un article

Nous allons ajouter la possibilité pour les auteurs de modifier leurs propres articles. Pour éviter de dupliquer le code, nous allons créer une fonction d'aide pour obtenir un article et vérifier si l'utilisateur actuel est l'auteur.

## flaskr/blog.py

@bp.route('/<int:id>/update', methods=('GET', 'POST'))
@login_required
def update(id):
    post = get_post(id)

    if request.method == 'POST':
        title = request.form['title']
        body = request.form['body']
        error = None

        if not title:
            error = 'Le titre est requis.'

        if error is not None:
            flash(error)
        else:
            db = get_db()
            db.execute(
                'UPDATE post SET title =?, body =?'
                ' WHERE id =?',
                (title, body, id)
            )
            db.commit()
            return redirect(url_for('blog.index'))

    return render_template('blog/update.html', post=post)

Suppression d'un article

Enfin, nous allons ajouter la possibilité pour les auteurs de supprimer leurs propres articles.

## flaskr/blog.py

@bp.route('/<int:id>/delete', methods=('POST',))
@login_required
def delete(id):
    get_post(id)
    db = get_db()
    db.execute('DELETE FROM post WHERE id =?', (id,))
    db.commit()
    return redirect(url_for('blog.index'))

Sommaire

Félicitations, vous avez créé une application de blog simple en utilisant Flask! Cette application prend en charge l'authentification des utilisateurs et permet aux utilisateurs de créer, d'éditer et de supprimer leurs propres articles de blog.