1660164900
Este artículo analiza cómo trabajar con archivos estáticos y de medios en un proyecto de Django, localmente y en producción.
Al final de este artículo, podrá:
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:
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?
Notas adicionales:
- Los archivos estáticos y de medios a veces se denominan activos estáticos y de medios.
- El administrador de Django viene con algunos archivos estáticos, que se almacenan en el control de versiones en GitHub .
- 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.
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:
Hay una serie de ajustes que puede necesitar configurar, dependiendo de su entorno:
/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
.<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
.FileSystemFinder
y :AppDirectoriesFinder
FileSystemFinder
- utiliza la STATICFILES_DIRS
configuración para buscar archivos.AppDirectoriesFinder
- busca archivos en una carpeta "estática" en cada aplicación Django dentro del proyecto.Las aplicaciones de archivos estáticos proporcionan los siguientes comandos de administración :
collectstatic
es 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_DIRS
configuración, y los copia en el STATIC_ROOT
directorio.findstatic
es un comando realmente útil para usar durante la depuración para que pueda ver exactamente de dónde proviene un archivo específicorunserver
inicia un servidor de desarrollo liviano para ejecutar su aplicación Django en desarrollo.Notas:
STATIC_ROOT
directorio. 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_DIRS
configuración o <APP_NAME>/static/
.Ejemplo rápido del
findstatic
comando:Digamos que tiene dos aplicaciones de Django
app1
yapp2
. 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 collectstatic
se 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
findstatic
comando:$ 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
Cuando collectstatic
se 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, StaticFilesStorage
utiliza 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 .
Para cargar archivos estáticos en sus archivos de plantilla, necesita:
{% load static %}
a la parte superior del archivo de plantilla{% static %}
etiqueta de plantillaPor ejemplo:
{% load static %}
<link rel="stylesheet" href="{% static 'base.css' %}">
Juntas, estas etiquetas generan una URL completa, por ejemplo, /static/base.css
basada 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_URL
sin 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 .
Durante el desarrollo, siempre que haya DEBUG
configurado TRUE
y esté usando la aplicación staticfiles , puede servir archivos estáticos usando el servidor de desarrollo de Django. Ni siquiera necesita ejecutar el collecstatic
comando.
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'
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:
STATIC_ROOT
)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 .
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.css
Nginx 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:
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 MIDDLEWARE
lista 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_STORAGE
así:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
¡Eso es todo! Desactive el modo de depuración, ejecute el collectstatic
comando 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.
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:
STATIC_URL
, esta es la URL donde los usuarios pueden acceder a los archivos multimedia.Consulte la sección Cargas de archivos de Configuración para obtener más opciones de configuración.
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_URLCONF
URL 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)
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.png
Nginx 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:
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:
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
1620177818
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.
#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
1620185280
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:
Describe 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
1660164900
Este artículo analiza cómo trabajar con archivos estáticos y de medios en un proyecto de Django, localmente y en producción.
Al final de este artículo, podrá:
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:
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?
Notas adicionales:
- Los archivos estáticos y de medios a veces se denominan activos estáticos y de medios.
- El administrador de Django viene con algunos archivos estáticos, que se almacenan en el control de versiones en GitHub .
- 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.
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:
Hay una serie de ajustes que puede necesitar configurar, dependiendo de su entorno:
/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
.<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
.FileSystemFinder
y :AppDirectoriesFinder
FileSystemFinder
- utiliza la STATICFILES_DIRS
configuración para buscar archivos.AppDirectoriesFinder
- busca archivos en una carpeta "estática" en cada aplicación Django dentro del proyecto.Las aplicaciones de archivos estáticos proporcionan los siguientes comandos de administración :
collectstatic
es 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_DIRS
configuración, y los copia en el STATIC_ROOT
directorio.findstatic
es un comando realmente útil para usar durante la depuración para que pueda ver exactamente de dónde proviene un archivo específicorunserver
inicia un servidor de desarrollo liviano para ejecutar su aplicación Django en desarrollo.Notas:
STATIC_ROOT
directorio. 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_DIRS
configuración o <APP_NAME>/static/
.Ejemplo rápido del
findstatic
comando:Digamos que tiene dos aplicaciones de Django
app1
yapp2
. 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 collectstatic
se 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
findstatic
comando:$ 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
Cuando collectstatic
se 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, StaticFilesStorage
utiliza 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 .
Para cargar archivos estáticos en sus archivos de plantilla, necesita:
{% load static %}
a la parte superior del archivo de plantilla{% static %}
etiqueta de plantillaPor ejemplo:
{% load static %}
<link rel="stylesheet" href="{% static 'base.css' %}">
Juntas, estas etiquetas generan una URL completa, por ejemplo, /static/base.css
basada 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_URL
sin 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 .
Durante el desarrollo, siempre que haya DEBUG
configurado TRUE
y esté usando la aplicación staticfiles , puede servir archivos estáticos usando el servidor de desarrollo de Django. Ni siquiera necesita ejecutar el collecstatic
comando.
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'
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:
STATIC_ROOT
)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 .
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.css
Nginx 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:
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 MIDDLEWARE
lista 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_STORAGE
así:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
¡Eso es todo! Desactive el modo de depuración, ejecute el collectstatic
comando 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.
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:
STATIC_URL
, esta es la URL donde los usuarios pueden acceder a los archivos multimedia.Consulte la sección Cargas de archivos de Configuración para obtener más opciones de configuración.
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_URLCONF
URL 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)
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.png
Nginx 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:
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:
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
1597123834
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
1626077187
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