Red de conocimiento informático - Conocimiento sistemático - El código fuente es azul.

El código fuente es azul.

Flask, vista, función de vista, vista de clase, vista de método, decorador, plano

En Flask, el enrutamiento se refiere al mapeo entre la URL solicitada por el usuario y la función de vista, procesando la relación entre la URL y la función El programa se llama enrutamiento. Flask coincide con la URL predefinida en la tabla de enrutamiento de acuerdo con la URL de la solicitud HTTP y encuentra la función de vista correspondiente. Devuelve el resultado de la ejecución de la función de vista al servidor.

En Flask, el decorador @app.route se usa de forma predeterminada para vincular funciones de vista con URL. Un decorador es una función que toma una función y devuelve una nueva función.

Utilice el decorador para vincular la relación entre la página de función de visualización y la URL '/' al atributo app.url_map, y el resultado de imprimir app.url_map es el siguiente. Hay dos tipos de reglas de URL: reglas de URL en el directorio raíz y reglas de URL en el directorio estático.

Puedes agregar parámetros de punto final al decorador para nombrar la URL. Una vez que se usa el parámetro de punto final url_for, no se puede usar el nombre de la función de vista, solo se puede usar el nombre de la URL definida.

La salida de url_for('index ') es el contenido de la URL en el formato de cadena "/"

También puedes usar add_url_rule para vincular la función de vista y la URL sin usar un decorador. . decorador @app.route es en realidad el método add_url_rule que se llama.

Las funciones de visualización también se pueden implementar en combinación con clases. La ventaja de la vista de clases es que admite la herencia y puede poner * * * cosas en la clase principal. Debe usar app.add_url_rule() para registrar la vista de clase. Según el método de programación, las vistas de clase se pueden dividir en vistas de clase estándar y vistas de clase.

Las vistas de clase estándar tienen una forma estándar de escribir.

Utilice la vista de clases para definir una propiedad en la clase principal, completar su lógica de negocios en la subclase y heredar la propiedad en la clase principal.

Defina plantillas para tres subclases respectivamente.

Al observar los resultados, además del contenido de las tres plantillas, los retornos de las tres URL también deben generar el atributo de anuncios de la clase principal.

Si la misma función de vista requiere un procesamiento lógico diferente según los diferentes métodos de solicitud, debe juzgarse dentro de la función de vista. Esto se puede lograr utilizando el método de vista de clase. La clase hereda flask.views. MethodView y se define como Solicitar el método en minúsculas con el mismo nombre para completar el procesamiento lógico.

La página de edición ingresa directamente a la página donde se generan el nombre de usuario y la contraseña. Después de enviar el formulario, pregunta si la contraseña es correcta.

Defina el nombre de la URL en HTML asociada al atributo de acción de la etiqueta del formulario.

Si no utiliza la implementación de la vista de método, debe llamar a request.method dentro de la vista ordinaria para determinar si es GET o POST.

La esencia del decorador es una función de Python que acepta una función y devuelve una función, de modo que una función puede obtener otras funciones adicionales.

Supongamos que un escenario accede a la página de detalles de noticias a través de otra función, pero primero debe iniciar sesión y el inicio de sesión se implementa a través de otra función. En este momento, debe pasar la función de acceso a noticias a la función de inicio de sesión y devolver una nueva función como una implementación lógica general. Este proceso de agregar nuevas funciones a la función de inicio de sesión para navegar por la web es un decorador.

La salida de la consola muestra que new_func() ejecuta una nueva función y la función básica user_login ejecuta una función recién agregada. El nombre real de la nueva función sigue siendo interno.

Si usa el símbolo mágico del decorador, puede llamar directamente a la función decorada y usar la nueva función para implementar la función básica. El proceso de pasar la función como parámetro se ha implementado automáticamente.

Tanto las funciones básicas como las funciones que se van a empaquetar admiten el paso de parámetros.

Mirando el código fuente de app.route(), la función de vista también está empaquetada. Antes de ejecutar la función original, se llama a add_url_rule para vincular la relación entre la URL, el punto final y la función de vista. la función original se devuelve para implementar la lógica empresarial.

El propósito del blueprint es escribir las funciones de vista de cada módulo en diferentes archivos py, importar el módulo de la vista de subenrutamiento en la vista principal, registrar el objeto del blueprint y reducir el acoplamiento de cada módulo funcional. Blueprint se usa para definir planos y app.register_blueprint se usa para registrar planos.

Implemente tres páginas: página de inicio, página de detalles, página de comparación, importe las otras dos páginas funcionales a la página de inicio y primero escriba los planos de las dos páginas funcionales: detalle.py y comparar.py

Utilice app = blueprint('detail', _ _ name _ _) para definir el objeto blueprint. El detalle es el nombre del plano y el nombre del plano no se puede repetir. Luego escriba la vista principal main.py y registre el plano anterior en la vista principal. Otras funciones de vista no pueden tener el mismo nombre que el nombre del plano.

Compruebe el efecto

Si llama a url_for en el script py del blueprint, debe agregar el nombre del blueprint (es decir, antes del nombre) como prefijo, como se muestra abajo