Red de conocimiento informático - Material del sitio web - Tutorial sobre el uso de plantillas HTML en Python

Tutorial sobre el uso de plantillas HTML en Python

Este artículo presenta principalmente el tutorial sobre el uso de plantillas HTML en Python. Las plantillas HTML también son una función básica en los principales marcos de Python. Los amigos que lo necesiten pueden consultarlo. Los marcos web nos salvaron de WSGI. Ahora, solo necesitamos continuar escribiendo funciones y trayendo URL, y podemos continuar con el desarrollo de la aplicación web.

Sin embargo, la aplicación web no se trata solo de procesar la lógica, la página que se muestra al usuario también es muy importante. Devolver una cadena que contiene HTML en la función está bien para una página simple, pero piense en las más de 6000 líneas de HTML en la página de inicio de Sina. ¿Está seguro de que puede escribirlo correctamente en una cadena de Python? llegar.

Como dice el refrán, los ingenieros de Python que no entienden el front-end no son buenos gerentes de producto. Todos los estudiantes con experiencia en desarrollo web saben que la parte más compleja de una aplicación web es la página HTML. El HTML no solo debe ser correcto, sino también embellecido mediante CSS, junto con scripts JavaScript complejos para lograr diversos efectos interactivos y de animación. En resumen, generar páginas HTML es muy difícil.

Dado que no es realista deletrear cadenas en código Python, apareció la tecnología de plantillas.

Al usar plantillas, necesitamos preparar un documento HTML con anticipación. Este documento HTML no es HTML ordinario, pero tiene algunas variables e instrucciones integradas y luego, según los datos que pasamos, después del reemplazo. , obtenemos el HTML final, enviado al usuario:

Este es el legendario MVC: Model-View-Controller, el nombre chino es "Model-View-Controller".

La función de Python para procesar URL es C: El controlador es responsable de la lógica empresarial, como verificar si el nombre de usuario existe, extraer información del usuario, etc.;

Contiene el variable {{ nombre }} La plantilla es V: Ver. Ver es responsable de la lógica de visualización. Simplemente reemplazando algunas variables, el resultado final de Ver es el HTML que ve el usuario.

¿Dónde está el Modelo en MVC? El Modelo se usa para pasarlo a la Vista, de modo que cuando la Vista reemplaza variables, pueda extraer los datos correspondientes del Modelo.

En el ejemplo anterior, Model es un dict:

{ nombre: Michael }

Sólo porque Python admite parámetros de palabras clave, muchos frameworks web permiten que sean se pasan parámetros de palabras clave y luego se ensambla un dict como modelo dentro del marco.

Ahora, reescribamos el último ejemplo de salida directa de una cadena como HTML usando el patrón MVC elegante y de alta gama:

16

17

p>

18

19

20

21

22

desde matraz importar matraz , solicitud, render_template

app = Flask(__name__)

@app.route(/, métodos=[GET, POST])

def home() :

return render_template(home.html)

@app.route(/signin, métodos=[GET])

def signin_form():

return render_template(form.html)

@app.route(/signin, métodos=[POST])

def signin():

nombre de usuario = request.form[nombre de usuario]

contraseña = request.form[contraseña]

si nombre de usuario==admin y contraseña==contraseña:

return render_template(signin-ok.html, nombre de usuario=nombre de usuario)

return render_template(form.html, mensaje=nombre de usuario o contraseña incorrectos, nombre de usuario=nombre de usuario)

if __name__ == __main__ :

app.run()

Flask usa la función render_template() para implementar la representación de plantillas. Al igual que en los marcos web, existen muchos tipos de plantillas en Python.

La plantilla admitida por Flask de forma predeterminada es jinja2, por lo que primero instalamos jinja2 directamente:

1

$ easy_install jinja2

Luego, comenzamos a escribir la plantilla jinja2:

1

home.html

Plantilla utilizada para mostrar la página de inicio:

11

html

cabeza

títuloInicio/título

/cabeza

cuerpo

h1 estilo=font-style:italicHome/h1

/body

/html

form.html

Plantilla utilizada para mostrar el formulario de inicio de sesión:

16

p>

17

18

html

head

titlePor favor, inicia sesión/title

/ cabeza

cuerpo

{% si mensaje %}

p estilo=color:rojo{{ mensaje }}/p

{ % endif %}

form action=/signin método=post

leyendaPor favor inicie sesión:/legend

pinput name=nombre de usuario placeholder= Valor de nombre de usuario={{ nombre de usuario }}/p

nombre de entrada=contraseña marcador de posición=Tipo de contraseña=contraseña/p

tipo de botón p=enviarIniciar sesión/botón/p

/form

/body

/html

signin-ok.html

Plantilla para iniciar sesión correctamente:

7

8

html

head

títuloBienvenido, {{ nombre de usuario }}/título

/cabeza

cuerpo

p¡Bienvenido, {{ nombre de usuario }}!/p

/cuerpo

/html

Error de inicio de sesión ¿Qué pasa con la plantilla? Agregamos un pequeño criterio condicional a form.html y reutilizamos form.html como plantilla de inicio de sesión fallido.

Finalmente, asegúrese de colocar la plantilla en el directorio de plantillas correcto. Las plantillas y app.py están en el mismo directorio:

Inicie python app.py y vea cómo está la plantilla. utilizado Efecto de página:

A través de MVC, procesamos M:Model y C:Controller en código Python, mientras que V:View se procesa a través de plantillas. De esta manera, maximizamos con éxito el código Python y el código HTML. . separados al máximo.

Otra gran ventaja de usar plantillas es que es muy conveniente cambiar la plantilla. Además, después de guardar los cambios, puedes actualizar el navegador para ver el efecto más reciente, lo cual es muy útil para depurar. front-end de HTML, CSS y JavaScript es realmente importante para los ingenieros.

En las plantillas de Jinja2, usamos {{ nombre }} para representar una variable que necesita ser reemplazada. Muchas veces, también se necesitan declaraciones de instrucciones como bucles y juicios condicionales. En Jinja2, se usa {% ... %} para representar instrucciones.

Por ejemplo, números de página de salida en bucle:

1

2

3

{% para i en page_list % }

a href=/page/{{ i }}{{ i }}/a

{% endfor %}

Si page_list es una lista: [1, 2, 3, 4, 5], la plantilla anterior generará 5 hipervínculos.

Además de Jinja2, las plantillas comunes incluyen:

Mako: una plantilla que usa ${xxx};

Cheetah: también usa ${xxx };

Django: Django es un marco integral con una plantilla incorporada que utiliza {% ... %} y {{ xxx }}.

Resumen

Con MVC, separamos el código Python y el código HTML. Coloque todo el código HTML en la plantilla, lo que hará que su escritura sea más eficiente.