Plantillas de uso de aprendizaje de Python

El marco web nos salvó de WSGI. Ahora, solo necesitamos continuar escribiendo la función, traer la URL, puede continuar el desarrollo de la aplicación web.

Sin embargo, la aplicación web no solo es lógica de procesamiento, sino que la página que se muestra al usuario también es muy importante. Devuelve una cadena que contenga HTML en la función. Una página simple está bien. Pero, piensa en las más de 6000 líneas de HTML en la página de inicio de Sina. ¿Estás seguro de que puedes escribirlo correctamente en una cadena de Python? No puedo hacerlo de todos modos. (Jajaja, lleva a la necesidad de plantillas)

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

Dado que no es realista escribir cadenas en código Python, ha surgido la tecnología de plantillas.

Para usar una plantilla, necesitamos preparar un documento HTML de antemano. Este documento HTML no es HTML ordinario, pero incorpora algunas variables e instrucciones . Luego, después de reemplazarlo de acuerdo con los datos que pasamos , obtenemos el HTML final y enviamos al usuario.

Inserte la descripción de la imagen aquí

Tenga en cuenta que aquí se devuelve un render_template para representar la plantilla

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

La función de la URL de procesamiento de Python es C: controlador, el controlador es responsable de la lógica comercial, como verificar si el nombre de usuario existe, sacar información del usuario y esperar; (palabra clave: lógica)

La plantilla que contiene las variables { {name}} es V: View. View es responsable de la lógica de visualización. Simplemente reemplazando algunas variables, el resultado final de View es el HTML que ve el usuario. (Palabra clave: pantalla)

¿Dónde está el modelo en MVC? El modelo se utiliza para pasar a la vista , de modo que cuando la vista reemplaza la variable, pueda recuperar los datos correspondientes del modelo . (Palabra clave: datos)

En el ejemplo anterior, Model es un dict:

{
    
    'name':'Michael'}

Solo porque Python admite parámetros de palabras clave, muchos marcos web permiten la entrada de parámetros de palabras clave y luego ensamblan un dictado como un modelo dentro del marco .

Ahora, reescribamos el ejemplo de generar directamente la cadena como HTML la última vez con el modo MVC de gama alta y alta:

from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def home():
    return render_template('home.html')

@app.route('/signin', methods=['GET'])
def signin_form():
    return render_template('form.html')

@app.route('/signin', methods=['POST'])
def signin():
    username = request.form['username']
    password = request.form['password']
    if username=='admin' and password=='password':
        return render_template('signin-ok.html', username=username)
    return render_template('form.html', message='Bad username or password', username=username)

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

Flask usa la función render_template () para lograr la representación de la plantilla . De manera similar a los marcos web, existen muchas plantillas para Python. La plantilla predeterminada compatible con Flask es jinja2, así que sigamos directamente a jinja2:

$ pip install jinja2

Luego, comience a escribir la plantilla jinja2:


La plantilla utilizada para mostrar la página de inicio de home.html :

<html>
<head>
  <title>Home</title>
</head>
<body>
  <h1 style="font-style:italic">Home</h1>
</body>
</html>

La plantilla
utilizada para mostrar el formulario de inicio de sesión en form.html :

<html>
<head>
  <title>Please Sign In</title>
</head>
<body>
  {
    
    % if message %}
  <p style="color:red">{
    
    {
    
     message }}</p>
  {
    
    % endif %}
  <form action="/signin" method="post">
    <legend>Please sign in:</legend>
    <p><input name="username" placeholder="Username" value="{
    
    { username }}"></p>
    <p><input name="password" placeholder="Password" type="password"></p>
    <p><button type="submit">Sign In</button></p>
  </form>
</body>
</html>

signin-ok.htmlPlantilla de inicio de sesión correcto
:

<html>
<head>
  <title>Welcome, {
    
    {
    
     username }}</title>
</head>
<body>
  <p>Welcome, {
    
    {
    
     username }}!</p>
</body>
</html>

¿Qué pasa con la plantilla de inicio de sesión fallido? Agregamos un poco de juicio a form.html y reutilizamos form.html como plantilla para el error de inicio de sesión. (La reutilización es importante)

Por último, asegúrese de poner la plantilla en el directorio de plantillas correcto. Las plantillas y app.py están en el mismo directorio de nivel:
Inserte la descripción de la imagen aquí
inicie python app.py y vea el efecto de página usando la plantilla:
(El código era incorrecto antes y el predeterminado el mensaje no es el nombre de usuario, después del cambio, el símbolo {todavía se muestra. Solo se puede mostrar después de reiniciar el servidor, por lo que no solo necesita cambiar el código, sino también reiniciar el servidor)
Inserte la descripción de la imagen aquí

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 hemos separado con éxito el código Python y el código HTML.

Otra gran ventaja de usar una plantilla es que es fácil cambiar la plantilla y, una vez guardado el cambio, puede actualizar el navegador para ver el efecto más reciente. Esto es realmente importante para los antiguos ingenieros que depuran HTML, CSS y JavaScript. . Arriba.

En la plantilla Jinja2, usamos { {name}} para indicar una variable que necesita ser reemplazada. En muchos casos, también se necesitan declaraciones de instrucciones tales como bucles y juicios condicionales. En Jinja2, {%…%} se usa para representar instrucciones.
Por ejemplo, número de página de salida de bucle

{
    
    % for i in 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: Utilice una plantilla de <%…%> y $ {xxx};

    Cheetah: Utilice también una plantilla de <%…%> y $ {xxx};

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

resumen

Con MVC, hemos separado el código Python y el código HTML. Ponga todo el código HTML en la plantilla, lo que hace que sea más eficiente escribirla.

Supongo que te gusta

Origin blog.csdn.net/qq_44787943/article/details/112638859
Recomendado
Clasificación