Uno, configuración de plantilla
①, cree una carpeta de plantillas en el proyecto, que puede almacenar archivos de página
②, busque TEMPLATES en el archivo de configuración de ajustes, DIRS: os.path.join (BASE_DIR, 'templates') significa buscar archivos html en plantillas en el directorio raíz.
③, APP_DIRS: Verdadero significa que si el html requerido no se encuentra en la carpeta principal de tempates, vaya a la carpeta en la aplicación para encontrarlo, pero la aplicación debe estar registrada en INSTALLED_APPS
④, si no se encuentran los archivos html, un TemplateDoesNotExist se lanzará de forma anormal
En segundo lugar, la representación de datos
Renderice el contenido en segundo plano en la página web
①, las tuplas de lista se pueden leer directamente a través del subíndice
②, el diccionario puede leer el valor correspondiente a través de k
Tres, símbolos de etiqueta (si, para, enlace de URL)
1. Si y para etiqueta
Nota:
①, for loop puede usar reverse. {% para libro en libros invertido%} recorrido inverso
②, se proporcionan algunos métodos para
Articulo | método | Descripción |
---|---|---|
1 | forloop.counter | El índice del bucle actual. Tome 1 como valor inicial. |
2 | forloop.counter0 | El índice del bucle actual. Empiece con 0. |
3 | forloop.revcounter | El valor de índice inverso del ciclo actual. Por ejemplo, si la lista tiene 5 elementos, el atributo es igual a 5 para el primer recorrido, 4 para la segunda vez, y así sucesivamente. Y con 1 como índice del último elemento. |
4 | forloop.revcounter0 | Similar a forloop.revcounter. La diferencia es que el índice del último elemento comienza desde 0. |
5 | forloop.first | Si es el primer recorrido. |
6 | forloop.last | Si es el último recorrido. |
③, {% for book in books%} El contenido del libro {% empty%} Si el libro está vacío, muéstrelo aquí {% endfor%}
2. Inversión de URL
. En el camino para ir a la página web a través de la URL en html, template_app no es app_name en url, index es el nombre en la ruta y el medio está conectado a través
Nota: La URL aquí se puede usar para empalmar cadenas o transferir parámetros de marcador de posición①
, empalmar cadenas: <-a href = "{% url'book: detail 'book_id = 1%}? Page = 1"> página de detalles del libro </ - a>
②, referencia de marcador de posición: <-a href = "{% url'book: detail 'book_id = 1 page = 2%}"> página de detalles del libro </-a>
3. Filtro de plantilla
Texto / representación |
Articulo | Nombre del filtro | uso | Descripción |
---|---|---|---|
1 | añadir | { {value / add: "2"}} | Agregue el parámetro pasado al valor original. Este filtro intentará convertir valores y parámetros en números enteros y luego agregarlos. Si el proceso de conversión falla, los valores y parámetros se empalmarán. Si es una cadena, se empalmará en una cadena, si es una lista, se empalmará en una lista. |
2 | cortar | { {valor / corte: ""}} | Elimina todas las cadenas especificadas en el valor. Similar a reemplazar (args, "") en Python. |
3 | fecha | { {cumpleaños / fecha: "A / m / d"}} | Formatee una fecha en una cadena de acuerdo con el formato especificado. |
4 | defecto | { {valor / predeterminado: "nada"}} | Si el valor se evalúa como falso. Por ejemplo, [], "", Ninguno, {} y otros valores que sean Falso en el juicio if utilizarán los valores predeterminados proporcionados por el filtro predeterminado. |
5 | primero | { {valor / primero}} | Devuelve el primer elemento de la lista / tupla / cadena. |
6 | último | { {value / last}} | Devuelve el último elemento de la lista / tupla / cadena. |
7 | floatformat |
|
redondeo |
8 | unirse | { {value / join: "/"}} | Similar a unirse en Python, concatenar listas / tuplas / cadenas con caracteres específicos. |
9 | longitud | { {valor / longitud}} | Obtenga la longitud de una lista / tupla / cadena / diccionario. |
10 | inferior | { {value / lower}} | Convierte todos los caracteres del valor a minúsculas. |
11 | Superior | { {value / upper}} | Similar a lower, excepto que la cadena especificada se convierte a mayúsculas. |
12 | aleatorio | { {valor / aleatorio}} | Seleccione aleatoriamente un valor en la lista / cadena / tupla dada. |
13 | seguro | { {value / safe}} | Es seguro marcar una cuerda. Eso desactivará el escape automático de esta cadena. |
14 | rebanada | { {some_list / slice: "2:"}} | Similar a la operación de corte en Python. |
15 | etiquetas de cadena | { {value / striptags}} | Elimina todas las etiquetas html de la cadena. |
dieciséis | truncatechars | { {valor / truncatechars: 5}} | Si la longitud de la cadena dada excede la longitud especificada por el filtro. Luego se cortará y se unirán tres puntos como puntos suspensivos. |
Cuatro, incluye y extiende
1. Incluya, cargue contenido personalizado y también puede realizar acciones de filtrado de etiquetas.
2. Extiende la herencia de la plantilla
Generalmente, se recomienda un archivo base.html. Pon la misma parte aquí y usa {% block name%} {% endblock%} como la interfaz del sucesor.
Luego, la subplantilla usa los nombres definidos en el bloque para compilar diferentes partes.
Cinco, cargue archivos estáticos (css, js)
①. Primero, asegúrese de que django.contrib.staticfiles se haya agregado a settings.INSTALLED_APPS.
②. Asegúrese de establecer STATIC_URL en settings.py.
③. Cree una carpeta llamada estática debajo de la aplicación instalada, luego cree una carpeta con el nombre de la aplicación actual debajo de la carpeta estática y luego coloque los archivos estáticos en esta carpeta.
④. Si hay algunos archivos estáticos que no están vinculados a ninguna aplicación. Luego, puede agregar STATICFILES_DIRS en settings.py, y DTL buscará archivos estáticos en la ruta de esta lista en el futuro.
STATICFILES_DIRS = [
os.path.join(BASE_DIR,"static"),
]
⑤. Utilice la etiqueta de carga para cargar la etiqueta estática en la plantilla. Por ejemplo, para cargar el archivo style.css en la carpeta estática del proyecto.
{
% load static %}
<link rel="stylesheet" href="{% static 'style.css' %}">
⑥. Si no desea usar load para cargar la etiqueta estática cada vez que carga un archivo estático en la plantilla, puede agregar'builtins ': [' django.templatetags.static '] a las PLANTILLAS / OPCIONES en la configuración .py, para que esté en la plantilla más adelante. Puede usar la etiqueta estática directamente en lugar de cargar manualmente.