Categorías
Python

Usando Frasco de inicio de sesión para la Gestión del usuario con el frasco

 

Tabla de Contenidos

  • Qué aplicación frasco se ve como
  • Qué Blueprint frasco se ve como
  • Cómo Frasco planos WorkMaking un frasco BlueprintRegistering el Blueprint en su aplicación
  • Haciendo un Blueprint Frasco
  • registrar el Blueprint en su aplicación
  • cómo utilizar Frasco planos de arquitecto de su aplicación CodeUnderstanding Por qué Proyecto Disposición MattersOrganizing Su ProjectsIncluding TemplatesProviding funciones diferentes a las Vistas de
  • la comprensión de qué proyecto Disposición Cuestiones
  • la organización de sus proyectos
  • incluyendo plantillas
  • que proporciona una funcionalidad Otro de VIEWS
  • cómo utilizar los planos matraz de mejorar la reutilización de código
  • Conclusión
  • Haciendo un frasco Blueprint
  • registrar el Blueprint en su aplicación
  • la comprensión de qué proyecto Disposición Matters
  • Organiz ing sus proyectos
  • incluyendo plantillas
  • que proporciona una funcionalidad Otro de VIEWS

matraz es un framework de aplicaciones web muy popular que deja casi todas las decisiones de diseño y arquitectura depende del desarrollador. En este tutorial, aprenderá cómo un frasco Blueprint o Blueprint para abreviar, pueden ayudar a estructurar su aplicación frasco mediante la agrupación de su funcionalidad en componentes reutilizables.

En este tutorial, aprenderá:

  • ¿Qué Frasco planos son y cómo funcionan
  • Cómo crear y utilizar un frasco Blueprint de organizar el código
  • Cómo mejorar la reutilización del código usando su cuenta o una Frasco de terceros Blueprint

Este tutorial asume que usted tiene cierta experiencia en el uso del frasco y que se ha construido algunas aplicaciones antes. Si no ha utilizado el frasco antes, entonces echa un vistazo a las aplicaciones web Python con el frasco (serie de tutoriales). Bono

gratuito: Haga clic aquí para obtener acceso a un tutorial de vídeo libres Frasco + Python que muestra cómo construir aplicación web Frasco, paso a paso.

Qué aplicación Frasco Parece inicio de igual

Let mediante la revisión de la estructura de una pequeña aplicación frasco. Se puede crear una pequeña aplicación Web siguiendo los pasos de esta sección. Para empezar, es necesario instalar el paquete Frasco Python. Puede ejecutar el siguiente comando para instalar el frasco utilizando pip:

$ pip install Flask==1.1.1

El anterior comando instala la versión 1.1.1 del frasco. Esta es la versión que va a utilizar a lo largo de este tutorial, aunque se puede aplicar lo que aprenderá aquí para otras versiones, también.

Nota: Para más información sobre cómo instalar el frasco en un entorno virtual y otras opciones de pepita, echa un vistazo a Python entornos virtuales: Una cartilla y lo que es Pip? Una guía para Nueva Pythonistas.

Después de instalar el frasco, ya está listo para empezar a aplicar su funcionalidad. Dado que el frasco no impone ninguna restricción en la estructura del proyecto, puede organizar el código de su proyecto como desee. Para su primera aplicación, se puede utilizar un diseño muy sencillo, como se muestra a continuación. Un solo archivo contendrá toda la lógica de la aplicación:

app/
|
└── app.py

El archivo app.py contendrá la definición de la aplicación y sus puntos de vista.

Cuando se crea una aplicación frasco, que se inicia mediante la creación de un objeto frasco que representa su aplicación, y luego asociar ve a las rutas . Frasco se encarga de enviar las solicitudes entrantes a la visión correcta en base a la URL de solicitud y las rutas que haya definido.

En Matraz, vistas puede ser cualquier exigible (como una función) que recibe solicita y devuelve la respuesta para esa petición. Frasco es responsable del envío de la parte posterior respuesta al usuario.

El bloque siguiente código es el código fuente completo de su aplicación:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
return "This is an example app"

Este código crea la aplicación objeto, que pertenece a la clase frasco. El índice de función de vista () está vinculado a la ruta / usando el decorador app.route. Para obtener más información sobre decoradores, echa un vistazo a decoradores cartilla en Python y decoradores de Python 101.

puede ejecutar la aplicación con el siguiente comando:

$ flask run

Por defecto, el frasco se ejecutará la aplicación que ha definido en app.py en el puerto 5000. mientras se ejecuta la aplicación, vaya a http: // localhost: 5000 mediante el navegador web. Usted verá una página que muestra el mensaje, esta es una aplicación ejemplo.

El diseño de proyecto elegido es ideal para aplicaciones muy pequeñas, pero no escala bien. A medida que crece su código, puede llegar a ser más difícil para usted para mantener todo en un solo archivo. Por lo tanto, cuando la aplicación crece en tamaño o complejidad, es posible que desee estructura su código de una manera diferente para mantenerlo fácil de mantener y limpiar de entender. A lo largo de este tutorial, aprenderá cómo utilizar un frasco Blueprint para lograrlo.

Qué Blueprint frasco se parece

Frasco planos encapsulan la funcionalidad , tales como imágenes, plantillas y otros recursos. Para hacerse una idea de cómo un frasco Blueprint funcionaría, puede refactorizar la aplicación anterior al mover la vista del índice en un frasco Blueprint. Para ello, hay que crear un Plan frasco que contiene la vista del índice y luego usarlo en la aplicación.

Esto es lo que la estructura de archivos parece que para esta nueva aplicación:

app/
|
├── app.py
└── example_blueprint.py

example_blueprint.py contendrá la implementación Blueprint frasco. A continuación, modificar app.py usarlo.

Los bloques de código siguiente muestra cómo se puede implementar este Plan frasco en example_blueprint.py. Contiene una vista en la ruta / que devuelve el texto Esta es una aplicación ejemplo:

from flask import Blueprint

example_blueprint = Blueprint('example_blueprint', __name__)

@example_blueprint.route('/')
def index():
return "This is an example app"

En el código anterior, se puede ver el pasos comunes a la mayoría de las definiciones Blueprint Frasco:

A continuación se muestra bloque de código cómo sus importaciones de aplicación y Blueprint utiliza el frasco:

from flask import Flask
from example_blueprint import example_blueprint

app = Flask(__name__)
app.register_blueprint(example_blueprint)

para usar cualquier Blueprint Frasco, tiene que importarlo y luego registro en la aplicación utilizando registro _blueprint (). Cuando un Blueprint matraz se registro ed, la aplicación se extiende con su contenido.

Puede ejecutar la aplicación con el siguiente comando:

$ flask run

Mientras se ejecuta la aplicación, vaya a http: // localhost: 5000 mediante el navegador web. Usted verá una página que muestra el mensaje, esta es una aplicación ejemplo.

Cómo Frasco Planos trabajo

En esta sección, aprenderá en detalle cómo se implementa un Plan Frasco y utilizado. Cada frasco Blueprint es un objeto que funciona de manera muy similar a una aplicación frasco. Ambos pueden tener recursos, como archivos estáticos, plantillas y puntos de vista que están asociadas con las rutas.

Sin embargo, un frasco Blueprint no es en realidad una aplicación. Tiene que ser registrada en una aplicación antes de poder ejecutarlo. Cuando se registra un Blueprint frasco en una aplicación, en realidad estás extendiéndose la aplicación con el contenido del Plan.

Este es el concepto clave detrás de cualquier Blueprint frasco. Ellos se registran las operaciones que se ejecutarán posteriormente cuando los registra en una aplicación. Por ejemplo, cuando se asocia un objeto de una ruta en un frasco Blueprint, registra esta asociación que formulará más adelante en la aplicación cuando se ha registrado en el plano.

Hacer un Plan de revisita el frasco de

Let la definición Blueprint frasco que ha visto con anterioridad y revisar en detalle. A continuación se muestra la creación de código objeto Blueprint:

from flask import Blueprint

example_blueprint = Blueprint('example_blueprint', __name__)

Tenga en cuenta que en el código anterior, algunos argumentos se especifican al crear el objeto Blueprint. El primer argumento, «example_blueprint», es el nombre de Blueprint , que es utilizado por el mecanismo de enrutamiento del frasco. El segundo argumento, __ __ nombre , es la importación del Blueprint nombre , que Frasco utiliza para localizar los recursos del proyecto.

Hay otros argumentos opcionales que se pueden proporcionar para alterar el comportamiento del Blueprint:

  • static_folder: la carpeta donde los archivos estáticos del Blueprint se pueden encontrar
  • static_url_path: la URL para servir archivos estáticos de
  • template_folder: la carpeta que contiene plantillas del Blueprint
  • URL_PREFIX: el camino a anteponer a todos subdominio URL
  • del Blueprint: el subdominio que las rutas de este Blueprint coincidirán en por url_defaults predeterminado
  • : un diccionario de valores por defecto que las opiniones de este Plan recibirán
  • root_path : ruta del directorio raíz del Plan, cuyo valor por defecto se obtiene de static_folder nombre de importación

del Blueprint: la carpeta donde los archivos estáticos del Blueprint se pueden encontrar

static_url_path: la URL para servir archivos estáticos de

template_folder: la folde r que contiene las plantillas del Blueprint

URL_PREFIX: el camino a anteponer a todos subdominio URL

del Blueprint: el subdominio que las rutas de este Blueprint coincidirán de forma predeterminada url_defaults

: un diccionario de valores predeterminados que puntos de vista de este Plan recibirán

root_path: ruta del directorio raíz del Plan, cuyo valor por defecto se obtiene a partir del nombre de importación Blueprint

Tenga en cuenta que todos los caminos, excepto root_path, son relativas al directorio del Blueprint.

El objeto Blueprint example_blueprint tiene métodos y decoradores que le permiten registrar operaciones a ejecutar al registrar el Blueprint frasco en una aplicación para extenderla. Uno de los decoradores más utilizado es el camino. Se le permite asociar una función de vista de una ruta de URL. El siguiente bloque de código muestra cómo se utiliza este decorador: Índice decorar

@example_blueprint.route('/')
def index():
return "This is an example app"

Usted () usando example_blueprint.route y asociar la función a la URL /.

Blueprint objetos también proporcionan otros métodos que pueden serle de utilidad:

  • .errorhandler () para registrar una función de controlador de error
  • .before_request () para ejecutar una acción ante cada petición
  • .after_request () para ejecutar una acción después de cada petición
  • .app_template_filter () para registrar un filtro de plantilla a nivel de aplicación

Usted puede aprender más acerca del uso de planos y la clase Blueprint en la Documentación Frasco planos.

registrar el Blueprint en su aplicación

Recordemos que un Blueprint frasco no es en realidad una aplicación. Cuando se registra el Blueprint frasco en una aplicación, extender la aplicación con su contenido. Muestra el código siguiente cómo se puede registrar el Blueprint Frasco creado previamente en una aplicación:

from flask import Flask
from example_blueprint import example_blueprint

app = Flask(__name__)
app.register_blueprint(example_blueprint)

Cuando llama .register_blueprint (), que se aplican todas las operaciones registradas en el Blueprint example_blueprint Frasco de aplicación. Ahora, las peticiones a la aplicación para la URL / se servirán utilizando .index () desde el Blueprint frasco.

Puede personalizar la forma del frasco Blueprint extiende la aplicación, proporcionando algunos parámetros a register_blueprint:

  • URL_PREFIX es un prefijo opcional para todas las rutas del Blueprint.
  • subdominio es un subdominio que Blueprint rutas coincidirán.
  • url_defaults es un diccionario con los valores por defecto de visión argumentos.

Ser capaz de hacer algún tipo de personalización en el momento de registro, en lugar de en tiempo de creación, es particularmente útil cuando estás compartiendo el mismo frasco Blueprint en diferentes proyectos.

En esta sección, usted ha visto cómo el trabajo Frasco planos y cómo puede crearlas y utilizarlas. En las siguientes secciones, aprenderá cómo puede aprovechar un frasco Blueprint a arquitecto sus aplicaciones, la estructuración en componentes independientes. En algunos casos, también es posible para volver a utilizar estos componentes en diferentes aplicaciones para reducir el tiempo de desarrollo!

cómo utilizar Frasco planos de Código

Arquitecto de la aplicación En esta sección, vamos a ver cómo se puede perfeccionar por un ejemplo de aplicación utilizando un frasco Blueprint. La aplicación de ejemplo es un sitio de comercio electrónico con las siguientes características:

  • Los visitantes pueden registrarse, iniciar sesión, y recuperar las contraseñas.
  • Los visitantes pueden buscar productos y ver sus detalles. Los usuarios
  • pueden añadir productos a su carro y la salida.
  • Una API permite a los sistemas externos para buscar y recuperar información del producto.

Usted no necesita preocuparse mucho por los detalles de la implementación. En su lugar, nos centraremos principalmente en la forma de un frasco Blueprint se puede utilizar para mejorar la arquitectura de la aplicación.

La comprensión de qué proyecto Disposición Matters

Recuerde, el frasco no hace cumplir cualquier diseño de proyecto en particular. Es completamente posible para organizar el código de esta aplicación como sigue: Código de

ecommerce/
|
├── static/
| ├── logo.png
| ├── main.css
| ├── generic.js
| └── product_view.js
|
├── templates/
| ├── login.html
| ├── forgot_password.html
| ├── signup.html
| ├── checkout.html
| ├── cart_view.html
| ├── index.html
| ├── products_list.html
| └── product_view.html
|
├── app.py
├── config.py
└── models.py

Esta aplicación se organiza el uso de estos directorios y archivos:

  • estática / contiene archivos estáticos de la aplicación.
  • templates / contiene plantillas de la aplicación.
  • models.py contiene la definición de los modelos de la aplicación.
  • contiene app.py la lógica de la aplicación.
  • contiene config.py los parámetros de configuración de la aplicación.

Este es un ejemplo de cómo comienzan muchas aplicaciones. Aunque este diseño es bastante sencillo, tiene varios inconvenientes que surgen a medida que aumenta la complejidad de la aplicación. Por ejemplo, será difícil para volver a utilizar la lógica de la aplicación en otros proyectos, porque toda la funcionalidad se incluye en app.py. Si se divide esta funcionalidad en módulos en su lugar, entonces se podría reutilizar módulos completos a través de diferentes proyectos .

Además, si usted tiene sólo un archivo para la lógica de la aplicación, entonces usted podría terminar con una muy grande app.py ese código mezclas que casi no relacionado. Esto puede hacer que sea difícil para que usted pueda navegar y mantener el guión. más, grandes archivos de código de

¿Qué son una fuente de conflicto cuando se trabaja en equipo, ya que todos van a realizar cambios en el mismo archivo. Estas son sólo algunas razones por la disposición anterior es sólo es bueno para aplicaciones muy pequeños.

La organización de sus proyectos

En lugar de estructuración de la aplicación mediante la disposición anterior, puede aprovechar un frasco Blueprint a dividir el código en diferentes módulos . En esta sección, verá cómo diseñar la aplicación anterior para hacer planos que encapsulan la funcionalidad relacionada. En este diseño, hay cinco Frasco planos:

Si utiliza un directorio independiente para cada Blueprint Frasco y sus recursos, entonces el diseño del proyecto se vería de la siguiente manera:

ecommerce/
|
├── api/
| ├── __init__.py
| └── api.py
|
├── auth/
| ├── templates/
| | └── auth/
| | ├── login.html
| | ├── forgot_password.html
| | └── signup.html
| |
| ├── __init__.py
| └── auth.py
|
├── cart/
| ├── templates/
| | └── cart/
| | ├── checkout.html
| | └── view.html
| |
| ├── __init__.py
| └── cart.py
|
├── general/
| ├── templates/
| | └── general/
| | └── index.html
| |
| ├── __init__.py
| └── general.py
|
├── products/
| ├── static/
| | └── view.js
| |
| ├── templates/
| | └── products/
| | ├── list.html
| | └── view.html
| |
| ├── __init__.py
| └── products.py
|
├── static/
| ├── logo.png
| ├── main.css
| └── generic.js
|
├── app.py
├── config.py
└── models.py

de Organización del Código de esta manera, se mueve todos los puntos de vista de app.py en el correspondiente Blueprint matraz. También se trasladó plantillas y archivos estáticos no globales. Esta estructura hace que sea más fácil para usted para encontrar el código y recursos relacionados con una funcionalidad determinada. Por ejemplo, si usted quiere encontrar la lógica de la aplicación sobre los productos, entonces usted puede ir a la Blueprint productos en los productos / products.py en lugar de desplazarse a través app.py. de

dejan ver la implementación Blueprint productos en los productos / products.py:

from flask import Blueprint, render_template
from ecommerce.models import Product

products_bp = Blueprint('products_bp', __name__,
template_folder='templates',
static_folder='static', static_url_path='assets')

@products_bp.route('/')
def list():
products = Product.query.all()
return render_template('products/list.html', products=products)

@products_bp.route('/view/')
def view(product_id):
product = Product.query.get(product_id)
return render_template('products/view.html', product=product)

Este código define el products_bp Frasco Blueprint y contiene sólo el código que está relacionado con la funcionalidad del producto. Desde este Plan frasco tiene sus propias plantillas, es necesario especificar el template_folder relativa a la raíz del Plan en la creación de objetos Blueprint. Desde que se especifique = static_folder ‘estática’ y static_url_path = ‘activos’, los archivos en el comercio electrónico / productos / estática / serán servidos bajo el / los activos / URL.

ya se puede mover el resto de la funcionalidad de su código a la correspondiente Blueprint frasco. En otras palabras, puede crear planos de API, autenticación, carro, y la funcionalidad general. Una vez que hayas hecho, el único código que queda en app.py será el código que se ocupa de la aplicación de inicialización y registro Blueprint Frasco:

from flask import Flask

from ecommmerce.api.api import api_bp
from ecommmerce.auth.auth import auth_bp
from ecommmerce.cart.cart import cart_bp
from ecommmerce.general.general import general_bp
from ecommmerce.products.products import products_bp

app = Flask(__name__)

app.register_blueprint(api_bp, url_prefix='/api')
app.register_blueprint(auth_bp)
app.register_blueprint(cart_bp, url_prefix='/cart')
app.register_blueprint(general_bp)
app.register_blueprint(products_bp, url_prefix='/products')

Ahora, simplemente app.py importaciones y los registros de los Modelos de extender la aplicación. Puesto que se utiliza URL_PREFIX, puede evitar colisiones entre rutas de URL Blueprint frasco. Por ejemplo, la URL / productos / y / compra / resolución de diferentes criterios de valoración definidos en los planos products_bp y cart_bp por la misma ruta, /.

incluyendo plantillas

En Frasco, cuando un punto de vista muestra una plantilla, el archivo de plantilla se busca en todos los directorios que se registraron en la ruta de búsqueda de plantilla de la aplicación . Por defecto, este camino es [ «/ templates»], por lo que sólo plantillas se buscan en el directorio templates / dentro del directorio raíz de la aplicación.

Si establece el argumento template_folder en la creación de un plano, a continuación, sus plantillas de carpeta se añade a la ruta de búsqueda de la plantilla de la aplicación cuando se ha registrado en el Blueprint frasco. Sin embargo, si hay rutas de archivos duplicados en diferentes directorios que forman parte de la ruta de búsqueda de plantilla, a continuación, uno tendrá prioridad , en función de su orden de inscripción.

Por ejemplo, si una vista pide al view.html plantilla y hay archivos con este mismo nombre en diferentes directorios en la ruta de búsqueda de plantilla, a continuación, uno de ellos tendrá prioridad sobre el otro. Puesto que puede ser difícil de recordar el orden de precedencia, lo mejor es evitar tener archivos bajo el mismo camino en diferentes directorios de plantillas. Es por eso que la siguiente estructura de las plantillas en la aplicación tiene sentido:

ecommerce/
|
└── products/
└── templates/
└── products/
├── search.html
└── view.html

Al principio, puede parecer redundante tener el nombre Blueprint frasco aparece dos veces:

Sin embargo, sabe que al hacer esto, se puede evitar un posible nombre de la plantilla colisiones entre diferentes planos. El uso de esta estructura de directorios, los puntos de vista que requieren la plantilla view.html de productos pueden utilizar productos / view.html como el nombre de archivo de plantilla al llamar render_template. Esto evita conflictos con el view.html que pertenece a la Cesta Blueprint.

Como nota final, es importante saber que las plantillas en el directorio de plantilla de la aplicación tienen mayor prioridad que los que están dentro del directorio de la plantilla de Blueprint. Esto puede ser útil para saber si desea reemplazar las plantillas Frasco Blueprint sin tener que modificar el archivo de plantilla.

Por ejemplo, si desea reemplazar la plantilla productos / view.html en el Blueprint de los productos, entonces usted puede lograr esto mediante la creación de un nuevo archivo de productos / view.html en el directorio de plantillas de aplicación:

ecommerce/
|
├── products/
| └── templates/
| └── products/
| ├── search.html
| └── view.html
|
└── templates/
└── products/
└── view.html

Al hacer esto , el programa utilizará las plantillas / productos / view.html lugar de productos / templates / productos / view.html cada vez que un punto de vista requiere los productos de la plantilla / view.html.

que proporciona una funcionalidad Otro de VIEWS

Hasta ahora, usted ha visto solamente planos que se extienden aplicaciones con vistas, pero Frasco Blueprint s no tiene que proporcionar puntos de vista tan sólo! Pueden ampliar las aplicaciones con plantillas , archivos estáticos y filtros plantilla . Por ejemplo, se podría crear una Blueprint Frasco para proporcionar un conjunto de iconos y utilizarlo a través de sus aplicaciones. Esta sería la estructura de archivos para tal Blueprint:

app/
|
└── icons/
├── static/
| ├── add.png
| ├── remove.png
| └── save.png
|
├── __init__.py
└── icons.py

La carpeta estático contiene los archivos de iconos y icons.py es la definición Blueprint frasco.

Así es como icons.py puede tener un aspecto:

from flask import Blueprint

icons_bp = Blueprint('icons_bp', __name__,
static_folder='static',
static_url_path='icons')

Este código define el icons_bp Frasco Blueprint que expone los archivos en el directorio estática bajo el / iconos / URL. Tenga en cuenta que este Plan no define ninguna ruta. Cuando

puede crear planos que las opiniones de paquetes y otros tipos de contenido, que hacen su código y activos más reutilizables a través de sus aplicaciones. Vas a aprender más sobre el frasco reutilización Blueprint en la sección siguiente.

cómo utilizar Frasco planos para mejorar la reutilización de código

Además de la organización del código, hay otra ventaja para estructurar su aplicación Frasco como una colección de componentes independientes . Puede volver a utilizar estos componentes, incluso a través de diferentes aplicaciones! Por ejemplo, si ha creado un Plan frasco que proporciona funcionalidad de un formulario de contacto, a continuación, puede volver a utilizarlo en todas sus aplicaciones.

Puede también planos de apalancamiento creados por otros desarrolladores para acelerar su trabajo. Si bien no hay depósito centralizado para Frasco planos existente, puede encontrarlos mediante el índice de Python Package, GitHub búsqueda, y los motores de búsqueda web. Usted puede aprender más acerca de las búsquedas paquetes PyPI en lo que se Pip? Una guía para Nueva Pythonistas.

Hay varios planos y Frasco Frasco Extensiones (que se implementan utilizando planos) que proporcionan una funcionalidad que usted puede encontrar útil: funcionalidad CRUD generación

    autenticación

  • Admin /
  • CMS
  • Y más!

En lugar de codificar su aplicación a partir de cero, se puede considerar la búsqueda de un frasco Blueprint existente o extensión que se puede reutilizar. Aprovechando Planos de terceros y las extensiones pueden ayudar a reducir el tiempo de desarrollo y mantener su enfoque en la lógica de la base de la aplicación!

Conclusión

En este tutorial, hemos visto cómo el trabajo Frasco planos, cómo usarlos, y cómo puede ayudar a organizar el código de su aplicación. Frasco planos son una gran herramienta para hacer frente a la complejidad de aplicación, ya que aumenta.

Usted ha aprendido:

  • ¿Qué Frasco planos son y cómo funcionan
  • cómo se puede implementar y utilizar un Blueprint Frasco
  • Cómo Frasco planos puede ayudar a organizar el código de su aplicación
  • cómo se puede utilizar Frasco planos para facilitar la reutilización de sus propios y de terceros componentes
  • cómo el uso de un Blueprint frasco en su proyecto puede reducir el tiempo de desarrollo

usted puede usar lo que ha aprendido en este tutorial para comenzar a organizar sus aplicaciones como un conjunto de planos. Cuando el arquitecto que las aplicaciones de esta manera, mejorará la reutilización de código, facilidad de mantenimiento, y el trabajo en equipo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *