Flask-Admin és una extensió poderosa per a Flask que permet crear interfícies d'administració de manera ràpida i senzilla. Aquesta extensió és molt útil per gestionar models de bases de dades, usuaris, permisos i altres aspectes de la teva aplicació web.

Continguts

Introducció a Flask-Admin

Flask-Admin proporciona una interfície d'administració basada en web per a les aplicacions Flask. És altament configurable i extensible, permetent-te crear una interfície d'administració que s'adapti a les necessitats específiques de la teva aplicació.

Instal·lació de Flask-Admin

Per instal·lar Flask-Admin, pots utilitzar pip:

pip install flask-admin

Configuració Bàsica

Després d'instal·lar Flask-Admin, el primer pas és configurar-lo a la teva aplicació Flask. A continuació es mostra un exemple bàsic de com fer-ho:

from flask import Flask
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydatabase.db'
db = SQLAlchemy(app)

# Configuració de Flask-Admin
admin = Admin(app, name='MyApp Admin', template_mode='bootstrap3')

# Definició d'un model de base de dades
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

# Afegir el model a l'administració
admin.add_view(ModelView(User, db.session))

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

Integració amb Flask-SQLAlchemy

Flask-Admin es pot integrar fàcilment amb Flask-SQLAlchemy per gestionar models de bases de dades. A l'exemple anterior, hem creat un model User i l'hem afegit a la interfície d'administració.

Exemple de Model

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(150), nullable=False)
    content = db.Column(db.Text, nullable=False)
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    author = db.relationship('User', backref=db.backref('posts', lazy=True))

admin.add_view(ModelView(Post, db.session))

Personalització de la Interfície d'Administració

Flask-Admin permet personalitzar la interfície d'administració de diverses maneres. Pots personalitzar les vistes, els formularis, els filtres i molt més.

Personalització de Vistes

class CustomModelView(ModelView):
    can_create = True
    can_edit = True
    can_delete = True
    column_list = ('id', 'username', 'email')
    form_columns = ('username', 'email')

admin.add_view(CustomModelView(User, db.session))

Personalització de Formularis

class CustomUserForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    email = StringField('Email', validators=[DataRequired(), Email()])

class CustomUserView(ModelView):
    form = CustomUserForm

admin.add_view(CustomUserView(User, db.session))

Exercicis Pràctics

Exercici 1: Crear un Model i Afegir-lo a l'Administració

  1. Crea un nou model Category amb els camps id i name.
  2. Afegeix el model Category a la interfície d'administració.

Solució

class Category(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)

admin.add_view(ModelView(Category, db.session))

Exercici 2: Personalitzar la Vista d'un Model

  1. Personalitza la vista del model Post per mostrar només els camps id, title i author_id.
  2. Permet només la creació i edició de registres, però no la seva eliminació.

Solució

class CustomPostView(ModelView):
    can_create = True
    can_edit = True
    can_delete = False
    column_list = ('id', 'title', 'author_id')

admin.add_view(CustomPostView(Post, db.session))

Conclusió

Flask-Admin és una eina poderosa per crear interfícies d'administració per a les teves aplicacions Flask. Amb la seva integració senzilla amb Flask-SQLAlchemy i les seves àmplies opcions de personalització, pots crear una interfície d'administració que s'adapti perfectament a les necessitats de la teva aplicació.

En el següent mòdul, explorarem l'ús de Flask-SocketIO per a WebSockets, una altra extensió útil per a les aplicacions Flask.

Curs de Desenvolupament Web amb Flask

Mòdul 1: Introducció a Flask

Mòdul 2: Conceptes Bàsics de Flask

Mòdul 3: Formularis i Entrada d'Usuari

Mòdul 4: Integració de Bases de Dades

Mòdul 5: Autenticació d'Usuaris

Mòdul 6: Conceptes Avançats de Flask

Mòdul 7: APIs RESTful amb Flask

Mòdul 8: Desplegament i Producció

Mòdul 9: Proves i Millors Pràctiques

Mòdul 10: Extensions i Ecosistema de Flask

© Copyright 2024. Tots els drets reservats