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
Category
amb els campsid
iname
. - 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
- Personalitza la vista del model
Post
per mostrar només els campsid
,title
iauthor_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