Esboço de aprendizagem da estrutura do Flask

Flask é uma estrutura web pequena, mas muito flexível e pode implementar muitos recursos avançados por meio de várias extensões e personalizações. Aqui estão alguns exemplos e análises:

  1. Instalação e configuração básica
    Instale o Flask:

    pip install Flask
    

    Exemplo de aplicação básica:

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
        return 'Hello, World!'
    
    if __name__ == '__main__':
        app.run()
    

    Análise: Este exemplo cria uma aplicação Flask básica e define uma rota que retorna "Hello, World!" ao acessar a URL raiz ('/').

  2. Exemplo de rotas
    :

    @app.route('/greet')
    def greet():
        return 'Hello, Flask User!'
    

    Análise: Este exemplo define uma nova rota "/greet".Quando o usuário acessar esta URL, será retornado "Hello, Flask User!".

  3. Funções de visualização
    As funções de visualização são definidas com rotas e retornam uma resposta.
    Análise: No exemplo anterior, as funções hello_worlde greetsão funções de visualização, que retornaram respostas diferentes, respectivamente.

  4. Exemplo de modelos
    :

    from flask import render_template
    
    @app.route('/template')
    def template():
        return render_template('template.html', variable='value')
    

    Análise: Aqui renderizamos um modelo chamado 'template.html' e passamos uma variável variable.

  5. Static Files
    Flask adiciona automaticamente rotas estáticas à /staticpasta do aplicativo.
    Análise: Coloque arquivos estáticos como CSS e JavaScript na /staticpasta da aplicação e /static/filenameacesse-os através do .
    Exemplo de armazenamento:
    armazene um arquivo de folha de estilo style.css na pasta estática no diretório do aplicativo Flask.
    Exemplo de acesso:

<link rel="stylesheet" href="{
     
     { url_for('static', filename='style.css') }}">

Análise: Arquivos estáticos (como folhas de estilo, imagens, arquivos JavaScript, etc.) geralmente são armazenados no diretório estático do projeto. Em um modelo ou arquivo HTML, você pode usar url_for('static', filename='filename') para gerar a URL de um arquivo estático.

  1. Exemplos de objetos de solicitação e resposta
    :

    from flask import request
    
    @app.route('/login', methods=['POST'])
    def login():
        username = request.form['username']
        return 'User %s logged in' % username
    

    Análise: Neste exemplo, obtemos o nome de usuário dos dados do formulário da solicitação POST.

  2. Exemplo de tratamento de erros
    :

    @app.errorhandler(404)
    def page_not_found(e):
        return render_template('404.html'), 404
    

    Análise: Este exemplo personaliza a página de erro 404 e retorna um modelo específico.

  3. Exemplo de configuração
    :

    app.config['DEBUG'] = True
    

    Análise: Aqui ativamos o modo de depuração do aplicativo Flask.

  4. Exemplo de sessões
    :

    from flask import session
    
    @app.route('/setuser/<username>')
    def setuser(username):
        session['username'] = username
        return 'User set to %s' % username
    

    Análise: Este exemplo define uma variável de sessão username.

  5. Exemplo de plantas
    :

    from flask import Blueprint
    mod = Blueprint('mod', __name__)
    
    @mod.route('/mod_route')
    def mod_route():
        return 'This is a route in a blueprint'
    

    Análise: Aqui criamos um blueprint e definimos uma rota no blueprint.

  6. Exemplo de extensões
    (tomando Flask-SQLAlchemy como exemplo):

    pip install Flask-SQLAlchemy
    
    from flask_sqlalchemy import SQLAlchemy
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:tmp/test.db'
    db = SQLAlchemy(app)
    

    Análise: Este exemplo mostra como instalar e configurar a extensão Flask-SQLAlchemy.
    Sim, a estrutura Flask é simples, mas fornece extensões e ferramentas para construir recursos avançados. Aqui estão alguns exemplos de uso do Flask para implementar recursos avançados:

  7. Autenticação do usuário
    A extensão Flask-Login pode ajudar a lidar com a autenticação do usuário.
    Exemplo:

pip install Flask-Login
from flask_login import LoginManager

login_manager = LoginManager()
login_manager.init_app(app)

@login_manager.user_loader
def load_user(user_id):
    return User.get(user_id)

Análise: A extensão Flask-Login é usada para lidar com sessões de usuário. A função no exemplo load_useré uma parte importante do gerenciamento de sessão de usuário. Ela carrega usuários do banco de dados.

  1. Operações de banco de dados
    A extensão Flask-SQLAlchemy pode ajudar nas operações de banco de dados.
    Exemplo:
pip install Flask-SQLAlchemy
from flask_sqlalchemy import SQLAlchemy

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:tmp/test.db'
db = SQLAlchemy(app)

Análise: O exemplo mostra como configurar a extensão Flask-SQLAlchemy e criar um SQLAlchemyobjeto dbque pode ser utilizado para operar o banco de dados.


  1. A extensão Flask-WTF de tratamento de formulários pode ajudar no processamento de formulários.
    Exemplo:
pip install Flask-WTF
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField

class LoginForm(FlaskForm):
    username = StringField('Username')
    password = PasswordField('Password')

Análise: O exemplo usa a extensão Flask-WTF para definir um formulário de login que contém campos de nome de usuário e senha.

  1. A extensão RESTful API
    Flask-RESTful pode ajudar a criar APIs RESTful.
    Exemplo:
pip install Flask-RESTful
from flask_restful import Api, Resource

api = Api(app)

class HelloWorld(Resource):
    def get(self):
        return {
    
    'hello': 'world'}

api.add_resource(HelloWorld, '/api/hello')

Análise: o exemplo usa a extensão Flask-RESTful para criar uma API RESTful simples, que possui um endpoint /api/helloe retorna uma resposta JSON.

  1. Upload de arquivo
    O próprio Flask suporta upload de arquivo.
    Exemplo:
from flask import request
from werkzeug.utils import secure_filename

@app.route('/upload', methods=['POST'])
def upload_file():
    f = request.files['file']
    f.save(secure_filename(f.filename))
    return 'File uploaded successfully'

Análise: Este exemplo mostra como usar o Flask para lidar com uploads de arquivos. O usuário carrega um arquivo por meio de uma solicitação POST e o arquivo é salvo no sistema de arquivos do servidor.

  1. Registro de erros
    O Flask possui suporte integrado para registro de erros e você pode configurar diferentes registradores para registrar informações de erros.
import logging
from logging.handlers import RotatingFileHandler

handler = RotatingFileHandler('error.log', maxBytes=10000, backupCount=3)
handler.setLevel(logging.ERROR)
app.logger.addHandler(handler)

Análise: Este exemplo configura um RotatingFileHandler para registrar informações de erro em error.logum arquivo. O tamanho do arquivo é limitado a 10.000 bytes e 3 backups são retidos.

  1. Cache
    A extensão Flask-Caching pode adicionar funcionalidade de cache ao seu aplicativo.
pip install Flask-Caching
from flask_caching import Cache

cache = Cache(app, config={
    
    'CACHE_TYPE': 'simple'})

@app.route('/cached')
@cache.cached(timeout=50)
def cached_view():
    return 'This is a cached view'

Análise: Este exemplo mostra como usar a extensão Flask-Caching para adicionar um cache para uma visualização específica, com um tipo de cache simples e um tempo limite de 50 segundos.

  1. Fila de tarefas
    Usando o Celery, você pode lidar com tarefas em segundo plano no Flask.
pip install celery
from celery import Celery

def make_celery(app):
    celery = Celery(
        app.import_name,
        backend=app.config['CELERY_RESULT_BACKEND'],
        broker=app.config['CELERY_BROKER_URL']
    )
    celery.conf.update(app.config)
    return celery

celery = make_celery(app)

@celery.task
def add(x, y):
    return x + y

Análise: Este exemplo mostra como usar o Celery para configurar e definir tarefas em segundo plano em um aplicativo Flask.

  1. A extensão WebSocket
    Flask-SocketIO fornece suporte WebSocket.
pip install flask-socketio
from flask_socketio import SocketIO

socketio = SocketIO(app)

@socketio.on('message')
def handle_message(message):
    print('received message: ' + message)

Análise: Este exemplo mostra como usar Flask-SocketIO para processar mensagens WebSocket.

  1. Teste de unidade
    O Flask possui suporte integrado para testes de unidade e você pode escrever facilmente casos de teste para seu aplicativo.

    import unittest
    
    class MyTestCase(unittest.TestCase):
    
        def setUp(self):
            app.testing = True
            self.app = app.test_client()
    
        def test_hello(self):
            rv = self.app.get('/')
            self.assertEqual(rv.data, b'Hello, World!')
    
  2. Internacionalização e localização
    O uso da extensão Flask-Babel pode realizar a internacionalização e localização da aplicação.

    pip install Flask-Babel
    
    from flask_babel import Babel
    
    babel = Babel(app)
    
    @babel.localeselector
    def get_locale():
        return request.accept_languages.best_match(['zh_CN', 'en_US'])
    

    Análise: Este exemplo mostra como usar a extensão Flask-Babel para implementar a seleção automática de idioma. Aqui, chinês e inglês são definidos.

  3. Pesquisa de texto completo
    Use a extensão Flask-WhooshAlchemy para adicionar pesquisa de texto completo aos seus modelos SQLAlchemy.

    pip install Flask-WhooshAlchemy
    
    import flask_whooshalchemy as whooshalchemy
    
    class MyModel(db.Model):
        __searchable__ = ['name']  # 设置搜索字段
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(64))
    
    whooshalchemy.whoosh_index(app, MyModel)
    

    Análise: Este exemplo mostra como usar Flask-WhooshAlchemy para adicionar funcionalidade de pesquisa de texto completo a um modelo.

  4. Tarefas agendadas
    podem ser implementadas no Flask usando APScheduler.

    pip install APScheduler
    
    from apscheduler.schedulers.background import BackgroundScheduler
    
    scheduler = BackgroundScheduler()
    scheduler.add_job(func=my_task, trigger="interval", seconds=60)
    scheduler.start()
    

    Análise: Este exemplo mostra como usar APScheduler para adicionar tarefas agendadas em um aplicativo Flask.

  5. Geração de documentação de API
    Use Flask-RESTPlus ou Flask-RESTx para gerar rapidamente documentação de API.

    pip install flask-restx
    
    from flask_restx import Api, Resource
    
    api = Api(app)
    
    @api.route('/api/hello')
    class HelloWorld(Resource):
        def get(self):
            return {
          
          'hello': 'world'}
    

    Análise: Este exemplo mostra como usar Flask-RESTx para criar uma API e gerar documentação automaticamente.

  6. Validação gráfica
    Use Flask-Captcha para gerar validações gráficas para aplicativos Flask.

    pip install Flask-Captcha
    
    from flask_captcha import Captcha
    
    captcha = Captcha(app)
    
  7. O compartilhamento de recursos entre domínios
    usa a extensão Flask-CORS para lidar com o compartilhamento de recursos entre domínios.

    pip install Flask-CORS
    
    from flask_cors import CORS
    
    CORS(app)
    
  8. Envio de e-mail
    Use a extensão Flask-Mail para enviar e-mails facilmente.

    pip install Flask-Mail
    
    from flask_mail import Mail, Message
    
    mail = Mail(app)
    
    @app.route('/send-mail')
    def send_mail():
        msg = Message("Hello", recipients=["[email protected]"])
        mail.send(msg)
        return 'Mail sent!'
    

    Análise: A extensão Flask-Mail simplifica o processo de envio de emails. Este exemplo mostra como enviar um email simples.

  9. Autenticação OAuth
    Flask-Dance é uma extensão que implementa autenticação OAuth e oferece suporte a vários provedores.

    pip install Flask-Dance
    
    from flask_dance.contrib.github import make_github_blueprint, github
    
    github_bp = make_github_blueprint(client_id='your_client_id', client_secret='your_secret')
    app.register_blueprint(github_bp, url_prefix="/github_login")
    

    Análise: Este exemplo mostra como usar Flask-Dance com GitHub para autenticação OAuth.

  10. Pagamento online
    Ao integrar Stripe, PayPal e outros serviços, o Flask pode implementar funções de pagamento online.

    pip install stripe
    
    import stripe
    
    stripe.api_key = "your_secret_key"
    
    @app.route('/pay')
    def pay():
        charge = stripe.Charge.create(
            amount=2000,
            currency='usd',
            description='A Flask Charge',
            source='tok_visa',
        )
        return 'Paid!'
    

    Análise: Este exemplo mostra como usar a biblioteca Stripe para implementar pagamento online em um aplicativo Flask.

  11. Monitoramento de desempenho de aplicativos
    Usando serviços como Flask-Talisman ou NewRelic, você pode monitorar o desempenho e a segurança de seu aplicativo Flask.

    pip install Flask-Talisman
    
    from flask_talisman import Talisman
    
    Talisman(app)
    

    Análise: Flask-Talisman adiciona alguns cabeçalhos de segurança HTTP para aumentar a segurança do aplicativo e também pode integrar outros serviços de monitoramento de desempenho e segurança.

  12. Processamento de imagens
    Através da biblioteca Pillow, o Flask pode implementar funções de processamento de imagens.

    pip install Pillow
    
    from PIL import Image
    
    @app.route('/image')
    def image():
        img = Image.open("example.jpg")
        img = img.rotate(45)
        img.save("rotated.jpg")
        return 'Image processed!'
    

    Análise: Este exemplo mostra como usar a biblioteca Pillow para processar imagens em um aplicativo Flask.

  13. Processamento de formulários da Web
    Use a extensão Flask-WTF para processar formulários da Web de maneira conveniente.

    pip install Flask-WTF
    
    from flask_wtf import FlaskForm
    from wtforms import StringField, SubmitField
    
    class MyForm(FlaskForm):
        name = StringField('Name')
        submit = SubmitField('Submit')
    

    Análise: Este exemplo mostra como criar um formulário simples usando Flask-WTF.

  14. Autenticação e autorização de usuário
    A extensão Flask-Security fornece um conjunto completo de soluções para autenticação e autorização de usuário.

    pip install Flask-Security
    
    from flask_security import Security, SQLAlchemyUserDatastore, UserMixin, RoleMixin
    
    class Role(db.Model, RoleMixin):
        id = db.Column(db.Integer(), primary_key=True)
        name = db.Column(db.String(80), unique=True)
    
    class User(db.Model, UserMixin):
        id = db.Column(db.Integer, primary_key=True)
        email = db.Column(db.String(255), unique=True)
        password = db.Column(db.String(255))
    
    user_datastore = SQLAlchemyUserDatastore(db, User, Role)
    security = Security(app, user_datastore)
    

    Análise: Este exemplo mostra como usar Flask-Security para autenticação e autorização de usuário.

  15. Programação assíncrona
    O Flask pode ser usado com bibliotecas assíncronas, como gevent, para implementar IO assíncrona.

    pip install gevent
    
    from gevent.pywsgi import WSGIServer
    from flask import Flask
    
    app = Flask(__name__)
    
    http_server = WSGIServer(('', 5000), app)
    http_server.serve_forever()
    

    Análise: Este exemplo demonstra como usar a biblioteca gevent para executar um aplicativo Flask para obter processamento assíncrono.

  16. Gerenciamento de conteúdo
    Usando a extensão Flask-Admin, você pode adicionar rapidamente uma interface de gerenciamento em segundo plano ao seu aplicativo.

    pip install Flask-Admin
    
    from flask_admin import Admin
    
    admin = Admin(app, name='My App', template_mode='bootstrap3')
    

    Análise: Este exemplo mostra como usar o Flask-Admin para criar rapidamente um histórico de gerenciamento.

  17. Suporte GraphQL O
    Flask pode oferecer suporte à API GraphQL integrando a biblioteca Graphene.

    pip install graphene
    
    from flask_graphql import GraphQLView
    from graphene import Schema
    
    app.add_url_rule('/graphql', view_func=GraphQLView.as_view('graphql', schema=Schema(), graphiql=True))
    

    Análise: Este exemplo demonstra como integrar a API GraphQL em um aplicativo Flask.

Esses exemplos são apenas a ponta do iceberg. O ecossistema do Flask é muito rico e você pode encontrar bibliotecas e plug-ins que atendem a quase todas as necessidades. Ao mesmo tempo, a documentação e a comunidade do Flask também são muito ativas e são recursos valiosos para aprender e resolver problemas. Claro que para aprender mais a fundo é recomendável consultar a documentação oficial do Flask .

Acho que você gosta

Origin blog.csdn.net/m0_57021623/article/details/133190414
Recomendado
Clasificación