Cómo leer el código fuente de Flask
Para leer el código fuente de Flask, realmente necesitas leer el código fuente de Werkzeug y el código fuente de Jinja2. Se puede dejar solo. La estructura del marco de Flask y Werkzeug está más estrechamente integrada. Por ejemplo, la instancia de solicitud que usamos en el contexto de una solicitud HTTP se implementa a través del contenedor LocalProxy. Jinja2 se centra completamente en la representación de plantillas. Si la tarea principal es aclarar la dirección del "flujo de respuesta de solicitud HTTP" en el código del marco, entonces la parte de Jinja2 es como un cuadro negro en primer lugar.
Cómo interrumpir, creo que la mejor manera es usar ipdb para colocar un punto de interrupción en su controlador de vista, luego iniciar el programa y acceder a la página en el navegador, cuando se ejecuta hasta el punto de interrupción, Python The El lado del proceso se ha cambiado al modo de depuración de ipdb. Puede revisarlo paso a paso y ver el código en el archivo actual, las líneas correspondientes y el marco de pila actual en cualquier momento.
La primera vez que usas ipdb para crear un punto de interrupción, no necesitas preocuparte por el código de contexto de cada paso que llegas, solo recuerda que estoy en qué función (método) en qué archivo y estarás bien Comprenda la secuencia de solicitud HTTP en el marco de Flask.
El siguiente paso es abrir los archivos fuente correspondientes a estas "partes del marco" para la lectura de macros. Este es el segundo paso y, si tiene experiencia, podrá ver visualmente (ya sea a través de los nombres de los métodos o mediante la autodocumentación del código) lo que se está haciendo aquí. Si el primer paso en la depuración con ipdb es delinear el marco en su mente, luego del segundo paso, ya tendrá una comprensión más clara y completa de la implementación del marco.
En el tercer paso, basándose en la comprensión establecida en el segundo paso, continúe usando los puntos de interrupción y la depuración de ipdb, pero esta vez, debe "explorar" cuidadosamente el contexto actual, por ejemplo, como se mencionó anteriormente. , vea el marco de pila, o locals(), globals() para ver los cambios en el espacio de nombres actual. La función del tercer paso es realizar una verificación práctica del modelo conceptual establecido en el segundo paso y profundizar la comprensión
Al repetir dos o tres pasos de esta manera, la comprensión de la implementación de las partes principales del marco se volverá más claro y más dominado. El hilo principal del marco y otros módulos, como señales, sesiones, etc., se pueden desglosar uno por uno.
Además, Flask dependerá directamente de su peligrosa biblioteca, lo cual creo que es comprensible.
Aún estoy estudiando el código fuente de Flask, porque las cadenas de documentos están muy bien escritas y pueden servirme como una buena plantilla para practicar el uso del componente sphinx-doc en otros proyectos :)
También estoy mirando el código fuente de Flask porque las cadenas de documentación están muy bien escritas y me sirven como una buena plantilla para practicar el uso del componente sphinx-doc en otros proyectos.