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:
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ó
- Crea un nou model
Categoryamb els campsidiname. - Afegeix el model
Categorya 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
- Personalitza la vista del model
Postper mostrar només els campsid,titleiauthor_id. - 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
- Què és Flask?
- Configuració del Teu Entorn de Desenvolupament
- Creant la Teva Primera Aplicació Flask
- Entenent l'Estructura d'una Aplicació Flask
Mòdul 2: Conceptes Bàsics de Flask
- Enrutament i Mapeig d'URL
- Gestió de Mètodes HTTP
- Renderització de Plantilles amb Jinja2
- Treballant amb Fitxers Estàtics
Mòdul 3: Formularis i Entrada d'Usuari
Mòdul 4: Integració de Bases de Dades
- Introducció a Flask-SQLAlchemy
- Definició de Models
- Realització d'Operacions CRUD
- Migracions de Bases de Dades amb Flask-Migrate
Mòdul 5: Autenticació d'Usuaris
- Registre d'Usuaris
- Inici i Tancament de Sessió d'Usuaris
- Hashing de Contrasenyes
- Gestió de Sessions d'Usuaris
Mòdul 6: Conceptes Avançats de Flask
- Blueprints per a Aplicacions Grans
- Gestió d'Errors
- Pàgines d'Error Personalitzades
- Registre i Depuració
Mòdul 7: APIs RESTful amb Flask
- Introducció a les APIs RESTful
- Creació de Punts Finals RESTful
- Gestió de Dades JSON
- Autenticació per a APIs
Mòdul 8: Desplegament i Producció
- Configuració de Flask per a Producció
- Desplegament a Heroku
- Desplegament a AWS
- Monitorització i Optimització del Rendiment
Mòdul 9: Proves i Millors Pràctiques
- Proves Unitàries amb Flask
- Proves d'Integració
- Cobertura de Proves
- Millors Pràctiques per al Desenvolupament amb Flask
