Derrick  Ferry

Derrick Ferry

1660164900

Trabajar Con Archivos Estáticos Y Multimedia En Django

Este artículo analiza cómo trabajar con archivos estáticos y de medios en un proyecto de Django, localmente y en producción.

Objetivos

Al final de este artículo, podrá:

  1. Describa los tres tipos diferentes de archivos que normalmente encontrará en un proyecto de Django
  2. Explicar la diferencia entre archivos estáticos y multimedia.
  3. Trabaje con archivos estáticos y multimedia localmente y en producción

Tipos de archivos

Django es un marco de aplicación web de pila completa y obstinado. Viene con muchas baterías que puede usar para crear una aplicación web completamente funcional, incluida la administración de archivos estáticos y de medios.

Antes de ver el cómo , comencemos con algunas definiciones.

¿Qué son los archivos estáticos y multimedia?

En primer lugar, normalmente encontrará estos tres tipos de archivos en un proyecto de Django:

  1. Código fuente : estos son los módulos principales de Python y los archivos HTML que conforman cada proyecto de Django, donde define sus modelos, vistas y plantillas.
  2. Archivos estáticos : estas son sus hojas de estilo CSS, archivos JavaScript, fuentes e imágenes. Dado que no hay procesamiento involucrado, estos archivos son muy eficientes desde el punto de vista energético, ya que pueden servirse tal cual. También son mucho más fáciles de almacenar en caché.
  3. Archivo multimedia : estos son archivos que carga un usuario.

Este artículo se centra en los archivos estáticos y multimedia. Aunque los nombres son diferentes, ambos representan archivos regulares. La diferencia significativa es que los archivos estáticos se mantienen en control de versiones y se envían con los archivos de código fuente durante la implementación. Por otro lado, los archivos multimedia son archivos que los usuarios finales (interna y externamente) cargan o que su aplicación crea dinámicamente (a menudo como un efecto secundario de alguna acción del usuario).

¿Por qué debería tratar los archivos estáticos y multimedia de manera diferente?

  1. No puede confiar en los archivos cargados por los usuarios finales, por lo que los archivos multimedia deben tratarse de manera diferente.
  2. Es posible que deba realizar el procesamiento de los archivos multimedia cargados por el usuario para brindar un mejor servicio; por ejemplo, puede optimizar las imágenes cargadas para que sean compatibles con diferentes dispositivos.
  3. No desea que un archivo subido por un usuario reemplace accidentalmente un archivo estático.

Notas adicionales:

  1. Los archivos estáticos y de medios a veces se denominan activos estáticos y de medios.
  2. El administrador de Django viene con algunos archivos estáticos, que se almacenan en el control de versiones en GitHub .
  3. Además de la confusión entre archivos estáticos y multimedia, la documentación de Django en sí misma no hace un gran trabajo para diferenciar entre los dos.

Archivos estáticos

Django proporciona una potente batería para trabajar con archivos estáticos, acertadamente llamados staticfiles .

Si es nuevo en la aplicación de archivos estáticos, eche un vistazo rápido a la guía Cómo administrar archivos estáticos (por ejemplo, imágenes, JavaScript, CSS) de la documentación de Django.

La aplicación de archivos estáticos de Django proporciona los siguientes componentes básicos:

  1. Ajustes
  2. Comandos de gestión
  3. Clases de almacenamiento
  4. Etiquetas de plantilla

Ajustes

Hay una serie de ajustes que puede necesitar configurar, dependiendo de su entorno:

  1. STATIC_URL : URL desde donde el usuario puede acceder a sus archivos estáticos en el navegador. El valor predeterminado es /static/, lo que significa que sus archivos estarán disponibles http://127.0.0.1:8000/static/en el modo de desarrollo, por ejemplo, http://127.0.0.1:8000/static/css/main.css.
  2. STATIC_ROOT : la ruta absoluta al directorio desde donde su aplicación Django servirá sus archivos estáticos. Cuando ejecuta el comando de gestión de recopilación estática (más sobre esto en breve), encontrará todos los archivos estáticos y los copiará en este directorio.
  3. STATICFILES_DIRS : de forma predeterminada, los archivos estáticos se almacenan en el nivel de la aplicación en <APP_NAME>/static/. El comando collectstatic buscará archivos estáticos en esos directorios. También puede decirle a Django que busque archivos estáticos en ubicaciones adicionales con STATICFILES_DIRS.
  4. STATICFILES_STORAGE : la clase de almacenamiento de archivos que le gustaría usar, que controla cómo se almacenan y se accede a los archivos estáticos. Los archivos se almacenan en el sistema de archivos a través de StaticFilesStorage .
  5. STATICFILES_FINDERS : esta configuración define los backends del buscador de archivos que se utilizarán para buscar automáticamente archivos estáticos. De forma predeterminada, se utilizan los buscadores FileSystemFindery :AppDirectoriesFinder
    • FileSystemFinder- utiliza la STATICFILES_DIRSconfiguración para buscar archivos.
    • AppDirectoriesFinder- busca archivos en una carpeta "estática" en cada aplicación Django dentro del proyecto.

Comandos de gestión

Las aplicaciones de archivos estáticos proporcionan los siguientes comandos de administración :

  1. collectstatices un comando de administración que recopila archivos estáticos de varias ubicaciones, es decir, <APP_NAME>/static/los directorios que se encuentran en la STATICFILES_DIRSconfiguración, y los copia en el STATIC_ROOTdirectorio.
  2. findstatices un comando realmente útil para usar durante la depuración para que pueda ver exactamente de dónde proviene un archivo específico
  3. runserverinicia un servidor de desarrollo liviano para ejecutar su aplicación Django en desarrollo.

Notas:

  1. No coloque ningún archivo estático en el STATIC_ROOTdirectorio. Ahí es donde los archivos estáticos se copian automáticamente después de ejecutar collectstatic. En su lugar, colóquelos siempre en los directorios asociados con la STATICFILES_DIRSconfiguración o <APP_NAME>/static/.
  2. No utilice el servidor de desarrollo en producción. En su lugar, utilice un servidor de aplicaciones WSGI de nivel de producción. Más sobre esto en breve.

Ejemplo rápido del findstaticcomando:

Digamos que tiene dos aplicaciones de Django app1y app2. Cada aplicación tiene una carpeta llamada "static", y dentro de cada una de esas carpetas, un archivo llamado app.css . Configuraciones relevantes de settings.py :

STATIC_ROOT = 'staticfiles'

INSTALLED_APPS = [
    ...
    'app1',
    'app2',
]

Cuando python manage.py collectstaticse ejecuta, se creará el directorio "staticfiles" y se copiarán en él los archivos estáticos apropiados:

$ ls staticfiles/

admin   app.css

Solo hay un archivo app.css porque cuando hay varios archivos con el mismo nombre, el buscador de archivos estáticos utilizará el primer archivo encontrado. Para ver qué archivo se copia, puede usar el findstaticcomando:

$ python manage.py findstatic app.css

Found 'app.css' here:
  /app1/static/app.css
  /app2/static/app.css

Dado que solo se recopila el primer archivo encontrado, para verificar la fuente de app.css que se copió en el directorio "staticfiles", ejecute:

$ python manage.py findstatic app.css --first

Found 'app.css' here:
  /app1/static/app.css

Clases de almacenamiento

Cuando collectstaticse ejecuta el comando, Django usa clases de almacenamiento para determinar cómo se almacenan y se accede a los archivos estáticos. Nuevamente, esto se configura a través de la configuración STATICFILES_STORAGE .

La clase de almacenamiento predeterminada es StaticFilesStorage . Detrás de escena, StaticFilesStorageutiliza la clase FileSystemStorage para almacenar archivos en el sistema de archivos local.

Es posible que desee desviarse del valor predeterminado en producción. Por ejemplo, django-storages proporciona algunas clases de almacenamiento personalizadas para diferentes proveedores de nube/CDN. También puede escribir su propia clase de almacenamiento utilizando la API de almacenamiento de archivos . Consulte Entrega de archivos estáticos desde un servicio en la nube o CDN para obtener más información al respecto.

Las clases de almacenamiento se pueden utilizar para realizar tareas de posprocesamiento como la minificación .

Etiquetas de plantilla

Para cargar archivos estáticos en sus archivos de plantilla, necesita:

  1. Agregar {% load static %}a la parte superior del archivo de plantilla
  2. Luego, para cada archivo que desee vincular, agregue la {% static %}etiqueta de plantilla

Por ejemplo:

{% load static %}

<link rel="stylesheet" href="{% static 'base.css' %}">

Juntas, estas etiquetas generan una URL completa, por ejemplo, /static/base.cssbasada en la configuración de archivos estáticos en el archivo settings.py .

Siempre debe cargar archivos estáticos de esta manera en lugar de codificar directamente la URL para que pueda cambiar la configuración de su archivo estático y apuntar a una diferente STATIC_URLsin tener que actualizar manualmente cada plantilla.

Para obtener más información sobre estas etiquetas de plantilla, revise la sección estática de Etiquetas y filtros de plantilla incorporados .

Archivos estáticos en modo de desarrollo

Durante el desarrollo, siempre que haya DEBUGconfigurado TRUEy esté usando la aplicación staticfiles , puede servir archivos estáticos usando el servidor de desarrollo de Django. Ni siquiera necesita ejecutar el collecstaticcomando.

Configuración típica de desarrollo:

# settings.py
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
STATICFILES_DIRS = [BASE_DIR / 'static',]
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'

Archivos estáticos de Django en modo de desarrollo

Archivos Estáticos en Producción

Manejar archivos estáticos en producción no es tan fácil como su entorno de desarrollo, ya que utilizará un servidor de aplicaciones web compatible con WSGI (como Gunicorn ) o ASGI (como Uvicorn ), que se utilizan para servir el contenido dinámico. es decir, sus archivos de código fuente de Django.

Hay varias formas diferentes de manejar archivos estáticos en producción, pero las dos opciones más populares son:

  1. Use un servidor web como Nginx para enrutar el tráfico destinado a sus archivos estáticos directamente a la raíz estática (configurada a través de STATIC_ROOT)
  2. Use WhiteNoise para servir archivos estáticos directamente desde el servidor de aplicaciones web WSGI o ASGI

Independientemente de la opción, probablemente querrá aprovechar una CDN .

Para obtener más información sobre estas opciones, consulte Cómo implementar archivos estáticos .

Nginx

Ejemplo de configuración de Nginx:

upstream hello_django {
    server web:8000;
}

server {

    listen 80;

    location / {
        proxy_pass http://hello_django;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /static/ {
        alias /home/app/web/staticfiles/;
    }

}

En resumen, cuando se envía una solicitud a /static/, por ejemplo, /static/base.cssNginx intentará entregar el archivo desde la carpeta "/home/app/web/staticfiles/".

¿Tienes curiosidad por saber cómo funciona la configuración de Nginx anterior? Consulte el tutorial Dockerizing Django con Postgres, Gunicorn y Nginx .

Recursos adicionales:

  1. ¿ Prefiere almacenar sus archivos estáticos en Amazon S3 ? Consulte Almacenamiento de archivos multimedia y estáticos de Django en Amazon S3 .
  2. ¿ Prefiere almacenar sus archivos estáticos en DigitalOcean Spaces ? Consulte Almacenamiento de archivos multimedia y estáticos de Django en DigitalOcean Spaces .

Ruido blanco

Puede usar WhiteNoise para servir archivos estáticos desde un servidor de aplicaciones web WSGI o ASGI.

La configuración más básica es simple. Después de instalar el paquete, agregue WhiteNoise a la MIDDLEWARElista por encima de todos los demás middleware además de django.middleware.security.SecurityMiddleware:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',  # <---- WhiteNoise!
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Luego, para soporte de compresión y almacenamiento en caché, actualice STATICFILES_STORAGEasí:

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

¡Eso es todo! Desactive el modo de depuración, ejecute el collectstaticcomando y luego ejecute su servidor de aplicaciones web WSGI o ASGI.

Consulte la guía Uso de WhiteNoise con Django para obtener más información sobre cómo configurar WhiteNoise para que funcione con Django.

Archivos multimedia

Nuevamente, los archivos multimedia son archivos que los usuarios finales (interna y externamente) cargan o que su aplicación crea dinámicamente (a menudo como un efecto secundario de alguna acción del usuario). Por lo general, no se mantienen en el control de versiones.

Casi siempre, los archivos asociados con los campos del modelo FileField o ImageField deben tratarse como archivos multimedia.

Al igual que con los archivos estáticos, el manejo de los archivos multimedia se configura en el archivo settings.py .

Ajustes de configuración esenciales para el manejo de archivos multimedia:

  1. MEDIA_URL : Similar a STATIC_URL, esta es la URL donde los usuarios pueden acceder a los archivos multimedia.
  2. MEDIA_ROOT : La ruta absoluta al directorio desde donde su aplicación Django servirá sus archivos multimedia.
  3. DEFAULT_FILE_STORAGE : la clase de almacenamiento de archivos que le gustaría usar, que controla cómo se almacenan y se accede a los archivos multimedia. El valor predeterminado es FileSystemStorage .

Consulte la sección Cargas de archivos de Configuración para obtener más opciones de configuración.

Archivos multimedia en modo de desarrollo

Configuración típica de desarrollo:

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'uploads'

Desafortunadamente, el servidor de desarrollo de Django no sirve archivos multimedia de forma predeterminada . Afortunadamente, existe una solución alternativa muy simple: puede agregar la raíz de medios como una ruta estática en las ROOT_URLCONFURL de nivel de proyecto.

Ejemplo:

from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    # ... the rest of your URLconf goes here ...
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Archivos multimedia en producción

Cuando se trata de manejar archivos de medios en producción, tiene menos opciones que para archivos estáticos, ya que no puede usar WhiteNoise para servir archivos de medios . Por lo tanto, normalmente querrá usar Nginx junto con django-storages para almacenar archivos multimedia fuera del sistema de archivos local donde su aplicación se ejecuta en producción.

Ejemplo de configuración de Nginx:

upstream hello_django {
    server web:8000;
}

server {

    listen 80;

    location / {
        proxy_pass http://hello_django;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /media/ {
        alias /home/app/web/mediafiles/;
    }

}

Entonces, cuando se envía una solicitud a /media/, por ejemplo, /media/upload.pngNginx intentará entregar el archivo desde la carpeta "/home/app/web/mediafiles/".

¿Tienes curiosidad por saber cómo funciona la configuración de Nginx anterior? Consulte el tutorial Dockerizing Django con Postgres, Gunicorn y Nginx .

Recursos adicionales:

  1. ¿ Prefiere almacenar sus archivos multimedia en Amazon S3 ? Consulte Almacenamiento de archivos multimedia y estáticos de Django en Amazon S3 .
  2. ¿ Prefiere almacenar sus archivos multimedia en DigitalOcean Spaces ? Consulte Almacenamiento de archivos multimedia y estáticos de Django en DigitalOcean Spaces .

Conclusión

Los archivos estáticos y multimedia son diferentes y deben tratarse de manera diferente por motivos de seguridad.

En este artículo, vio ejemplos de cómo servir archivos estáticos y multimedia en desarrollo y producción. Además, el artículo también cubría:

  1. Las diferentes configuraciones para ambos tipos de archivos.
  2. Cómo los maneja Django con una configuración mínima

Puede encontrar un proyecto simple de Django con ejemplos para servir archivos estáticos en desarrollo y producción y archivos multimedia en desarrollo aquí .

Este artículo solo lo guía a través del manejo de archivos estáticos y de medios en Django. No analiza el procesamiento previo/posterior de los archivos estáticos, como la minimización y la agrupación. Para tales tareas, debe configurar procesos de compilación complejos con herramientas como Rollup , Parcel o webpack .

Fuente:  https://testdriven.io

#django 

What is GEEK

Buddha Community

Trabajar Con Archivos Estáticos Y Multimedia En Django
Ahebwe  Oscar

Ahebwe Oscar

1620177818

Django admin full Customization step by step

Welcome to my blog , hey everyone in this article you learn how to customize the Django app and view in the article you will know how to register  and unregister  models from the admin view how to add filtering how to add a custom input field, and a button that triggers an action on all objects and even how to change the look of your app and page using the Django suit package let’s get started.

Database

Custom Titles of Django Admin

Exclude in Django Admin

Fields in Django Admin

#django #create super user django #customize django admin dashboard #django admin #django admin custom field display #django admin customization #django admin full customization #django admin interface #django admin register all models #django customization

Ahebwe  Oscar

Ahebwe Oscar

1620185280

How model queries work in Django

How model queries work in Django

Welcome to my blog, hey everyone in this article we are going to be working with queries in Django so for any web app that you build your going to want to write a query so you can retrieve information from your database so in this article I’ll be showing you all the different ways that you can write queries and it should cover about 90% of the cases that you’ll have when you’re writing your code the other 10% depend on your specific use case you may have to get more complicated but for the most part what I cover in this article should be able to help you so let’s start with the model that I have I’ve already created it.

**Read More : **How to make Chatbot in Python.

Read More : Django Admin Full Customization step by step

let’s just get into this diagram that I made so in here:

django queries aboutDescribe each parameter in Django querset

we’re making a simple query for the myModel table so we want to pull out all the information in the database so we have this variable which is gonna hold a return value and we have our myModel models so this is simply the myModel model name so whatever you named your model just make sure you specify that and we’re gonna access the objects attribute once we get that object’s attribute we can simply use the all method and this will return all the information in the database so we’re gonna start with all and then we will go into getting single items filtering that data and go to our command prompt.

Here and we’ll actually start making our queries from here to do this let’s just go ahead and run** Python manage.py shell** and I am in my project file so make sure you’re in there when you start and what this does is it gives us an interactive shell to actually start working with our data so this is a lot like the Python shell but because we did manage.py it allows us to do things a Django way and actually query our database now open up the command prompt and let’s go ahead and start making our first queries.

#django #django model queries #django orm #django queries #django query #model django query #model query #query with django

Derrick  Ferry

Derrick Ferry

1660164900

Trabajar Con Archivos Estáticos Y Multimedia En Django

Este artículo analiza cómo trabajar con archivos estáticos y de medios en un proyecto de Django, localmente y en producción.

Objetivos

Al final de este artículo, podrá:

  1. Describa los tres tipos diferentes de archivos que normalmente encontrará en un proyecto de Django
  2. Explicar la diferencia entre archivos estáticos y multimedia.
  3. Trabaje con archivos estáticos y multimedia localmente y en producción

Tipos de archivos

Django es un marco de aplicación web de pila completa y obstinado. Viene con muchas baterías que puede usar para crear una aplicación web completamente funcional, incluida la administración de archivos estáticos y de medios.

Antes de ver el cómo , comencemos con algunas definiciones.

¿Qué son los archivos estáticos y multimedia?

En primer lugar, normalmente encontrará estos tres tipos de archivos en un proyecto de Django:

  1. Código fuente : estos son los módulos principales de Python y los archivos HTML que conforman cada proyecto de Django, donde define sus modelos, vistas y plantillas.
  2. Archivos estáticos : estas son sus hojas de estilo CSS, archivos JavaScript, fuentes e imágenes. Dado que no hay procesamiento involucrado, estos archivos son muy eficientes desde el punto de vista energético, ya que pueden servirse tal cual. También son mucho más fáciles de almacenar en caché.
  3. Archivo multimedia : estos son archivos que carga un usuario.

Este artículo se centra en los archivos estáticos y multimedia. Aunque los nombres son diferentes, ambos representan archivos regulares. La diferencia significativa es que los archivos estáticos se mantienen en control de versiones y se envían con los archivos de código fuente durante la implementación. Por otro lado, los archivos multimedia son archivos que los usuarios finales (interna y externamente) cargan o que su aplicación crea dinámicamente (a menudo como un efecto secundario de alguna acción del usuario).

¿Por qué debería tratar los archivos estáticos y multimedia de manera diferente?

  1. No puede confiar en los archivos cargados por los usuarios finales, por lo que los archivos multimedia deben tratarse de manera diferente.
  2. Es posible que deba realizar el procesamiento de los archivos multimedia cargados por el usuario para brindar un mejor servicio; por ejemplo, puede optimizar las imágenes cargadas para que sean compatibles con diferentes dispositivos.
  3. No desea que un archivo subido por un usuario reemplace accidentalmente un archivo estático.

Notas adicionales:

  1. Los archivos estáticos y de medios a veces se denominan activos estáticos y de medios.
  2. El administrador de Django viene con algunos archivos estáticos, que se almacenan en el control de versiones en GitHub .
  3. Además de la confusión entre archivos estáticos y multimedia, la documentación de Django en sí misma no hace un gran trabajo para diferenciar entre los dos.

Archivos estáticos

Django proporciona una potente batería para trabajar con archivos estáticos, acertadamente llamados staticfiles .

Si es nuevo en la aplicación de archivos estáticos, eche un vistazo rápido a la guía Cómo administrar archivos estáticos (por ejemplo, imágenes, JavaScript, CSS) de la documentación de Django.

La aplicación de archivos estáticos de Django proporciona los siguientes componentes básicos:

  1. Ajustes
  2. Comandos de gestión
  3. Clases de almacenamiento
  4. Etiquetas de plantilla

Ajustes

Hay una serie de ajustes que puede necesitar configurar, dependiendo de su entorno:

  1. STATIC_URL : URL desde donde el usuario puede acceder a sus archivos estáticos en el navegador. El valor predeterminado es /static/, lo que significa que sus archivos estarán disponibles http://127.0.0.1:8000/static/en el modo de desarrollo, por ejemplo, http://127.0.0.1:8000/static/css/main.css.
  2. STATIC_ROOT : la ruta absoluta al directorio desde donde su aplicación Django servirá sus archivos estáticos. Cuando ejecuta el comando de gestión de recopilación estática (más sobre esto en breve), encontrará todos los archivos estáticos y los copiará en este directorio.
  3. STATICFILES_DIRS : de forma predeterminada, los archivos estáticos se almacenan en el nivel de la aplicación en <APP_NAME>/static/. El comando collectstatic buscará archivos estáticos en esos directorios. También puede decirle a Django que busque archivos estáticos en ubicaciones adicionales con STATICFILES_DIRS.
  4. STATICFILES_STORAGE : la clase de almacenamiento de archivos que le gustaría usar, que controla cómo se almacenan y se accede a los archivos estáticos. Los archivos se almacenan en el sistema de archivos a través de StaticFilesStorage .
  5. STATICFILES_FINDERS : esta configuración define los backends del buscador de archivos que se utilizarán para buscar automáticamente archivos estáticos. De forma predeterminada, se utilizan los buscadores FileSystemFindery :AppDirectoriesFinder
    • FileSystemFinder- utiliza la STATICFILES_DIRSconfiguración para buscar archivos.
    • AppDirectoriesFinder- busca archivos en una carpeta "estática" en cada aplicación Django dentro del proyecto.

Comandos de gestión

Las aplicaciones de archivos estáticos proporcionan los siguientes comandos de administración :

  1. collectstatices un comando de administración que recopila archivos estáticos de varias ubicaciones, es decir, <APP_NAME>/static/los directorios que se encuentran en la STATICFILES_DIRSconfiguración, y los copia en el STATIC_ROOTdirectorio.
  2. findstatices un comando realmente útil para usar durante la depuración para que pueda ver exactamente de dónde proviene un archivo específico
  3. runserverinicia un servidor de desarrollo liviano para ejecutar su aplicación Django en desarrollo.

Notas:

  1. No coloque ningún archivo estático en el STATIC_ROOTdirectorio. Ahí es donde los archivos estáticos se copian automáticamente después de ejecutar collectstatic. En su lugar, colóquelos siempre en los directorios asociados con la STATICFILES_DIRSconfiguración o <APP_NAME>/static/.
  2. No utilice el servidor de desarrollo en producción. En su lugar, utilice un servidor de aplicaciones WSGI de nivel de producción. Más sobre esto en breve.

Ejemplo rápido del findstaticcomando:

Digamos que tiene dos aplicaciones de Django app1y app2. Cada aplicación tiene una carpeta llamada "static", y dentro de cada una de esas carpetas, un archivo llamado app.css . Configuraciones relevantes de settings.py :

STATIC_ROOT = 'staticfiles'

INSTALLED_APPS = [
    ...
    'app1',
    'app2',
]

Cuando python manage.py collectstaticse ejecuta, se creará el directorio "staticfiles" y se copiarán en él los archivos estáticos apropiados:

$ ls staticfiles/

admin   app.css

Solo hay un archivo app.css porque cuando hay varios archivos con el mismo nombre, el buscador de archivos estáticos utilizará el primer archivo encontrado. Para ver qué archivo se copia, puede usar el findstaticcomando:

$ python manage.py findstatic app.css

Found 'app.css' here:
  /app1/static/app.css
  /app2/static/app.css

Dado que solo se recopila el primer archivo encontrado, para verificar la fuente de app.css que se copió en el directorio "staticfiles", ejecute:

$ python manage.py findstatic app.css --first

Found 'app.css' here:
  /app1/static/app.css

Clases de almacenamiento

Cuando collectstaticse ejecuta el comando, Django usa clases de almacenamiento para determinar cómo se almacenan y se accede a los archivos estáticos. Nuevamente, esto se configura a través de la configuración STATICFILES_STORAGE .

La clase de almacenamiento predeterminada es StaticFilesStorage . Detrás de escena, StaticFilesStorageutiliza la clase FileSystemStorage para almacenar archivos en el sistema de archivos local.

Es posible que desee desviarse del valor predeterminado en producción. Por ejemplo, django-storages proporciona algunas clases de almacenamiento personalizadas para diferentes proveedores de nube/CDN. También puede escribir su propia clase de almacenamiento utilizando la API de almacenamiento de archivos . Consulte Entrega de archivos estáticos desde un servicio en la nube o CDN para obtener más información al respecto.

Las clases de almacenamiento se pueden utilizar para realizar tareas de posprocesamiento como la minificación .

Etiquetas de plantilla

Para cargar archivos estáticos en sus archivos de plantilla, necesita:

  1. Agregar {% load static %}a la parte superior del archivo de plantilla
  2. Luego, para cada archivo que desee vincular, agregue la {% static %}etiqueta de plantilla

Por ejemplo:

{% load static %}

<link rel="stylesheet" href="{% static 'base.css' %}">

Juntas, estas etiquetas generan una URL completa, por ejemplo, /static/base.cssbasada en la configuración de archivos estáticos en el archivo settings.py .

Siempre debe cargar archivos estáticos de esta manera en lugar de codificar directamente la URL para que pueda cambiar la configuración de su archivo estático y apuntar a una diferente STATIC_URLsin tener que actualizar manualmente cada plantilla.

Para obtener más información sobre estas etiquetas de plantilla, revise la sección estática de Etiquetas y filtros de plantilla incorporados .

Archivos estáticos en modo de desarrollo

Durante el desarrollo, siempre que haya DEBUGconfigurado TRUEy esté usando la aplicación staticfiles , puede servir archivos estáticos usando el servidor de desarrollo de Django. Ni siquiera necesita ejecutar el collecstaticcomando.

Configuración típica de desarrollo:

# settings.py
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
STATICFILES_DIRS = [BASE_DIR / 'static',]
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'

Archivos estáticos de Django en modo de desarrollo

Archivos Estáticos en Producción

Manejar archivos estáticos en producción no es tan fácil como su entorno de desarrollo, ya que utilizará un servidor de aplicaciones web compatible con WSGI (como Gunicorn ) o ASGI (como Uvicorn ), que se utilizan para servir el contenido dinámico. es decir, sus archivos de código fuente de Django.

Hay varias formas diferentes de manejar archivos estáticos en producción, pero las dos opciones más populares son:

  1. Use un servidor web como Nginx para enrutar el tráfico destinado a sus archivos estáticos directamente a la raíz estática (configurada a través de STATIC_ROOT)
  2. Use WhiteNoise para servir archivos estáticos directamente desde el servidor de aplicaciones web WSGI o ASGI

Independientemente de la opción, probablemente querrá aprovechar una CDN .

Para obtener más información sobre estas opciones, consulte Cómo implementar archivos estáticos .

Nginx

Ejemplo de configuración de Nginx:

upstream hello_django {
    server web:8000;
}

server {

    listen 80;

    location / {
        proxy_pass http://hello_django;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /static/ {
        alias /home/app/web/staticfiles/;
    }

}

En resumen, cuando se envía una solicitud a /static/, por ejemplo, /static/base.cssNginx intentará entregar el archivo desde la carpeta "/home/app/web/staticfiles/".

¿Tienes curiosidad por saber cómo funciona la configuración de Nginx anterior? Consulte el tutorial Dockerizing Django con Postgres, Gunicorn y Nginx .

Recursos adicionales:

  1. ¿ Prefiere almacenar sus archivos estáticos en Amazon S3 ? Consulte Almacenamiento de archivos multimedia y estáticos de Django en Amazon S3 .
  2. ¿ Prefiere almacenar sus archivos estáticos en DigitalOcean Spaces ? Consulte Almacenamiento de archivos multimedia y estáticos de Django en DigitalOcean Spaces .

Ruido blanco

Puede usar WhiteNoise para servir archivos estáticos desde un servidor de aplicaciones web WSGI o ASGI.

La configuración más básica es simple. Después de instalar el paquete, agregue WhiteNoise a la MIDDLEWARElista por encima de todos los demás middleware además de django.middleware.security.SecurityMiddleware:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',  # <---- WhiteNoise!
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Luego, para soporte de compresión y almacenamiento en caché, actualice STATICFILES_STORAGEasí:

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

¡Eso es todo! Desactive el modo de depuración, ejecute el collectstaticcomando y luego ejecute su servidor de aplicaciones web WSGI o ASGI.

Consulte la guía Uso de WhiteNoise con Django para obtener más información sobre cómo configurar WhiteNoise para que funcione con Django.

Archivos multimedia

Nuevamente, los archivos multimedia son archivos que los usuarios finales (interna y externamente) cargan o que su aplicación crea dinámicamente (a menudo como un efecto secundario de alguna acción del usuario). Por lo general, no se mantienen en el control de versiones.

Casi siempre, los archivos asociados con los campos del modelo FileField o ImageField deben tratarse como archivos multimedia.

Al igual que con los archivos estáticos, el manejo de los archivos multimedia se configura en el archivo settings.py .

Ajustes de configuración esenciales para el manejo de archivos multimedia:

  1. MEDIA_URL : Similar a STATIC_URL, esta es la URL donde los usuarios pueden acceder a los archivos multimedia.
  2. MEDIA_ROOT : La ruta absoluta al directorio desde donde su aplicación Django servirá sus archivos multimedia.
  3. DEFAULT_FILE_STORAGE : la clase de almacenamiento de archivos que le gustaría usar, que controla cómo se almacenan y se accede a los archivos multimedia. El valor predeterminado es FileSystemStorage .

Consulte la sección Cargas de archivos de Configuración para obtener más opciones de configuración.

Archivos multimedia en modo de desarrollo

Configuración típica de desarrollo:

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'uploads'

Desafortunadamente, el servidor de desarrollo de Django no sirve archivos multimedia de forma predeterminada . Afortunadamente, existe una solución alternativa muy simple: puede agregar la raíz de medios como una ruta estática en las ROOT_URLCONFURL de nivel de proyecto.

Ejemplo:

from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    # ... the rest of your URLconf goes here ...
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Archivos multimedia en producción

Cuando se trata de manejar archivos de medios en producción, tiene menos opciones que para archivos estáticos, ya que no puede usar WhiteNoise para servir archivos de medios . Por lo tanto, normalmente querrá usar Nginx junto con django-storages para almacenar archivos multimedia fuera del sistema de archivos local donde su aplicación se ejecuta en producción.

Ejemplo de configuración de Nginx:

upstream hello_django {
    server web:8000;
}

server {

    listen 80;

    location / {
        proxy_pass http://hello_django;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /media/ {
        alias /home/app/web/mediafiles/;
    }

}

Entonces, cuando se envía una solicitud a /media/, por ejemplo, /media/upload.pngNginx intentará entregar el archivo desde la carpeta "/home/app/web/mediafiles/".

¿Tienes curiosidad por saber cómo funciona la configuración de Nginx anterior? Consulte el tutorial Dockerizing Django con Postgres, Gunicorn y Nginx .

Recursos adicionales:

  1. ¿ Prefiere almacenar sus archivos multimedia en Amazon S3 ? Consulte Almacenamiento de archivos multimedia y estáticos de Django en Amazon S3 .
  2. ¿ Prefiere almacenar sus archivos multimedia en DigitalOcean Spaces ? Consulte Almacenamiento de archivos multimedia y estáticos de Django en DigitalOcean Spaces .

Conclusión

Los archivos estáticos y multimedia son diferentes y deben tratarse de manera diferente por motivos de seguridad.

En este artículo, vio ejemplos de cómo servir archivos estáticos y multimedia en desarrollo y producción. Además, el artículo también cubría:

  1. Las diferentes configuraciones para ambos tipos de archivos.
  2. Cómo los maneja Django con una configuración mínima

Puede encontrar un proyecto simple de Django con ejemplos para servir archivos estáticos en desarrollo y producción y archivos multimedia en desarrollo aquí .

Este artículo solo lo guía a través del manejo de archivos estáticos y de medios en Django. No analiza el procesamiento previo/posterior de los archivos estáticos, como la minimización y la agrupación. Para tales tareas, debe configurar procesos de compilación complejos con herramientas como Rollup , Parcel o webpack .

Fuente:  https://testdriven.io

#django 

Ananya Gupta

Ananya Gupta

1597123834

Main Pros and Cons of Django As A Web Framework for Python Developers

Django depicts itself as “the web system for fussbudgets with cutoff times”. It was intended to help Python engineers take applications from idea to consummation as fast as could be expected under the circumstances.

It permits fast turn of events on the off chance that you need to make a CRUD application with batteries included. With Django, you won’t need to rehash an already solved problem. It just works and lets you center around your business rationale and making something clients can utilize.

Pros of Django

“Batteries included” theory

The standard behind batteries-included methods normal usefulness for building web applications accompanies the system, not as isolated libraries.

Django incorporates much usefulness you can use to deal with normal web advancement undertakings. Here are some significant level functionalities that Django gives you, which else you need to stay together if you somehow happened to utilize a small scale structure:

ORM

Database relocations

Client validation

Administrator board

Structures

Normalized structure

Django as a system proposes the right structure of an undertaking. That structure helps designers in making sense of how and where to execute any new component.

With a generally acknowledged venture structure that is like numerous tasks, it is a lot simpler to discover online good arrangements or approach the network for help. There are numerous energetic Python designers who will assist you with comprehending any issue you may experience.

Django applications

Django applications (or applications for short) permit designers to separate a task into numerous applications. An application is whatever is introduced by putting in settings.INSTALLED_APPS. This makes it simpler for engineers to add usefulness to the web application by coordinating outer Django applications into the venture.

There are many reusable modules and applications to accelerate your turn of events learn through Online Django Class and Check the Django website.

Secure of course

Django gives great security assurance out of the crate and incorporates avoidance components for basic assaults like SQL Injection (XSS) and Cross-site Request Forgery (CSRF). You can discover more subtleties in the official security diagram control.

REST structure for building APIs

Django REST Framework, commonly condensed “DRF”, is a Python library for building APIs. It has secluded and adaptable engineering that functions admirably for both straightforward and complex web APIs.

DRF gives a lot of verification and authorization strategies out of the case. It is an adaptable, full-included library with measured and adjustable engineering. It accompanies nonexclusive classes for CRUD tasks and an implicit API program for testing API endpoints.

GraphQL structure for building APIs

Huge REST APIs regularly require a lot of solicitations to various endpoints to recover every single required datum. GraphQL it’s a question language that permits us to share related information in a lot simpler design. For a prologue to GraphQL and an outline of its ideas, if it’s not too much trouble allude to the authority GraphQL documentation.

Graphene-Django gives reflections that make it simple to add GraphQL usefulness to your Django venture. Ordinary Django models, structures, validation, consent arrangements, and different functionalities can be reused to manufacture GraphQL blueprint. It additionally gives an implicit API program for testing API endpoints.

Cons of Django

Django ORM

Django ORM, made before SQLAlchemy existed, is currently much sub-par compared to SQLAlchemy. It depends on the Active Record design which is more regrettable than the Unit of Work design embraced by SQLAlchemy. This implies, in Django, models can “spare” themselves and exchanges are off as a matter of course, they are a bit of hindsight. Peruse more in Why I kind of aversion Django.

Django advances course popularity increses day by day:

Django is huge and is viewed as strong bit of programming. This permits the network to create several reusable modules and applications yet has additionally restricted the speed of advancement of the Django. On head of that Django needs to keep up in reverse similarity, so it advances gradually.

Rundown - Should I use Django as a Python designer?

While Django ORM isn’t as adaptable as SQLAlchemy and the enormous environment of reusable modules and applications hinders structure advancement - plainly Django ought to be the best option web system for Python engineers.

Elective, light systems, similar to Flask, while offering a retreat from Django huge biological system and designs, in the long haul can require substantially more additional libraries and usefulness, in the end making many experienced Python engineers winding up wishing they’d began with Django.

Django undertaking’s security and network have become enormously over the previous decade since the system’s creation. Official documentation and instructional exercises are probably the best anyplace in programming advancement. With each delivery, Django keeps on including huge new usefulness.

#django online training #django online course #online django course #django course #django training #django certification course

Marget D

Marget D

1626077187

4 key Features of Django Framework that Make it the Best Amongst all!

Django is one of the popular python based open-source web frameworks mainly used by the developers who like to have rapid development along with the clean pragmatic design.

Read this blog to know the various Django Features with details.

#django framework #django web development #django development company #django development services #python django development company #python django development