Python Flask: explicación detallada para la creación rápida de aplicaciones web

Este artículo explorará los servicios web de Python Flask en detalle. Primero presentaré brevemente Flask y luego introduciré gradualmente conceptos avanzados como enrutamiento, plantillas, procesamiento de formularios e integración de bases de datos en Flask. El objetivo es permitir que todos entiendan y dominen las habilidades de usar Flask para crear aplicaciones web dinámicas.

1. Introducción al matraz

Flask es un marco de aplicación web de interfaz de puerta de enlace de servidor web (WSGI) ligero. Está diseñado para ser fácil de usar, pero también proporciona extensibilidad, y los usuarios pueden elegir libremente con qué bibliotecas de terceros integrarlo. Flask es un marco "micro", lo que significa que su funcionalidad principal es muy limitada, pero se puede mejorar a través de una serie de extensiones.

Echemos un vistazo a cómo crear una aplicación Flask simple.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

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

En este código, primero importamos el módulo Flask y creamos una instancia de servidor web Flask. Luego, definimos una ruta, es decir /. Esta ruta está asignada a una función hello_worldque devuelve la cadena '¡Hola, mundo!' cuando el usuario visita esta URL.

2. Enrutamiento de matraces

app.routeFlask hace que la definición de rutas sea simple y fácil al proporcionar decoradores . Pero, ¿sabía que también podemos app.add_url_ruleagregar rutas directamente a través de métodos? Este enfoque proporciona más flexibilidad, por ejemplo, se pueden agregar diferentes métodos HTTP a la ruta.

def hello():
    return "Hello, World!"

app.add_url_rule('/', 'hello', hello)

En el código anterior, app.add_url_ruleel primer parámetro de es la regla de URL, el segundo parámetro es el alias de la función y el tercer parámetro es la función que se va a asignar.

3. Plantillas de matraces

Flask utiliza la biblioteca de plantillas jinja2. Esta biblioteca es muy poderosa y le permite incrustar código Python en HTML. El siguiente ejemplo muestra cómo usar plantillas en una aplicación Flask:

from flask import render_template

@app.route('/hello/<name>')
def hello(name):
    return render_template('hello.html', name=name)

render_templateFunción utilizada para renderizar una plantilla. Recibe el nombre de la plantilla y algunas variables de plantilla como argumentos y devuelve el contenido HTML generado. En las plantillas, puede usar { { name }}para mostrar el valor de una variable.

4. Procesamiento de formularios de matraces

Flask-WTF es una biblioteca de extensión para manejar formularios web en Flask. Se basa en WTF Python, una biblioteca de Python para trabajar con datos de formularios. Flask-WTF también cuenta con protección CSRF (Cross-Site Request Forgery).

nos deja

Mira un ejemplo sencillo:

from flask import request
from flask_wtf import FlaskForm
from wtforms import StringField

class MyForm(FlaskForm):
    name = StringField('name')

@app.route('/submit', methods=('GET', 'POST'))
def submit():
    form = MyForm()
    if form.validate_on_submit():
        return 'Hello, %s' % form.name.data
    return render_template('submit.html', form=form)

En este ejemplo, definimos una clase de formulario MyFormcon un namecampo. Luego, submitcreamos una instancia de esta clase en la ruta y verificamos si el formulario pasa la validación. Si el formulario es válido, devolvemos un mensaje de bienvenida; de lo contrario, representamos una plantilla de formulario.

5. Integración de la base de datos Flask

Flask-SQLAlchemy es una biblioteca de extensión que proporciona compatibilidad con SQLAlchemy para aplicaciones Flask. SQLAlchemy es una herramienta ORM (Asignación relacional de objetos) en Python que puede asignar clases a tablas de bases de datos.

from flask_sqlalchemy import SQLAlchemy

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

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username

En este ejemplo, primero configuramos la URL de la base de datos y luego creamos una SQLAlchemyinstancia. A continuación, definimos una Userclase que hereda db.Modely tiene dos propiedades: idy username. Ambas propiedades son columnas de la tabla de la base de datos.

6. Cree una API RESTful con Flask

Flask-RESTful es una extensión que vale la pena conocer al crear API web. Proporciona una manera fácil de crear rápidamente API REST. Puede implementar recursos de API definiendo clases de Python y asignar métodos HTTP (como GET, POST) a métodos de la clase.

from flask_restful import Resource, Api

api = Api(app)

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

api.add_resource(HelloWorld, '/')

En el código anterior, primero creamos un objeto Api, luego definimos una clase de recursos e implementamos un método HelloWorlden esta clase . getFinalmente, api.add_resourcevinculamos HelloWorldla clase a /la URL usando .

7. Plano del matraz

La función de blueprint de Flask nos permite organizar aplicaciones más grandes y complejas. Puede pensar en un blueprint como un subconjunto de una aplicación Flask que puede tener sus propias rutas, plantillas y archivos estáticos.

Aquí hay un ejemplo simple:

from flask import Blueprint

simple_page = Blueprint('simple_page', __name__)

@simple_page.route('/<page>')
def show(page):
    return 'Page %s' % page

En este ejemplo, primero creamos un simple_pageplano llamado y luego definimos una ruta para este plano show.

8. Manejo de errores de matraces

Flask nos permite personalizar la función de manejo de errores, cuando ocurre un error HTTP específico, podemos devolver una respuesta personalizada. Aquí hay un ejemplo de cómo definir un controlador personalizado para errores 404:

@app.errorhandler(404)
def page_not_found(error):
    return 'This page does not exist', 404

En este ejemplo, usamos app.errorhandlerun decorador para registrar una nueva función de manejo de errores. Cuando se produce un error 404, devolverá un mensaje de error personalizado.

9. Gancho de solicitud de petaca

Flask proporciona varios decoradores que podemos usar para registrar funciones que se llaman en diferentes etapas del procesamiento de una solicitud. Estos decoradores incluyen before_first_request, before_requesty after_request.teardown_request

@app.before_request
def before_request():
    print("This is executed BEFORE each request.")

En este ejemplo, before_requestla función del decorador se ejecutará antes de cada solicitud.

10. Cookies y sesiones en frasco

En el desarrollo web, a menudo necesitamos almacenar información del usuario, como las preferencias del usuario o el estado de inicio de sesión. Flask proporciona dos formas de realizar esta tarea, Cookies y Sesiones.

Aquí hay un ejemplo de cómo configurar y leer cookies en Flask:

@app.route('/set')
def setcookie():
    resp = make_response('Setting cookie!')
    resp.set_cookie('username', 'the username')
    return resp

@app.route('/get')
def getcookie():
    username = request.cookies.get('username')
    return 'The username is ' + username

En el ejemplo anterior, setcookiela ruta establece una cookie llamada usernamey getcookiela ruta lee y devuelve el valor de esta cookie.

Una cosa más

El cliente de prueba de Flask nos permite simular el envío de solicitudes a nuestra aplicación y ver las respuestas.

def test_index():
    client = app.test_client()
    response = client.get('/')
    assert response.status_code == 200

En el código anterior, primero creamos un cliente de prueba. Luego, usamos este cliente para enviar una solicitud GET a /la URL y, finalmente, verificamos si el código de estado de la respuesta es 200.

Esta es solo la punta del iceberg de las poderosas funciones de Flask. El encanto de Flask es mucho más que eso. También tiene muchas extensiones ricas, como Flask-Login para manejar la autenticación de usuarios, Flask-Mail para enviar correos electrónicos y Flask- Migrar para procesar bases de datos, migración, etc.

Si es útil, preste más atención a la cuenta pública personal de WeChat: [Perspectiva completa de Python] TeahLead_KrisChang, más de 10 años de experiencia en la industria de Internet e inteligencia artificial, más de 10 años de experiencia en tecnología y gestión de equipos comerciales, Tongji Software Licenciado en Ingeniería, Máster en Gestión de Ingeniería de Fudan, Arquitecto sénior de servicios en la nube certificado por Aliyun, Jefe de negocio de productos de IA con cientos de millones de ingresos.

Supongo que te gusta

Origin blog.csdn.net/magicyangjay111/article/details/131458001
Recomendado
Clasificación