Estoy tratando de cargar una imagen a través del administrador de Django y luego ver esa imagen en una página en la interfaz o simplemente a través de una URL.
Tenga en cuenta que todo esto está en mi máquina local.
Mi configuración es la siguiente:
MEDIA_ROOT = '/home/dan/mysite/media/'
MEDIA_URL = '/media/'
Establecí el parámetro upload_to en 'imágenes' y el archivo se cargó correctamente en el directorio:
'/home/dan/mysite/media/images/myimage.png'
Sin embargo, cuando intento acceder a la imagen en la siguiente URL:
http://127.0.0.1:8000/media/images/myimage.png
Me sale un error 404.
¿Debo configurar patrones específicos de URLconf para los medios cargados?
Cualquier consejo apreciado.
Gracias.
^
signo antesmedia//(?P<path>.*)$
, en algún momento cuando accedemos al archivo multimedia en la ruta de la url de la aplicación (comohttp://127.0.0.1:8000/myapp/media/img/logo.png
), esto no es matemático.Lea atentamente el DOC oficial de Django y encontrará la respuesta más adecuada.
La mejor y más fácil forma de resolver esto es la siguiente.
fuente
if settings.DEV
verificación porque se desactiva automáticamente?Para Django 1.9, debe agregar el siguiente código según la documentación:
Para obtener más información, puede consultar aquí: https://docs.djangoproject.com/en/1.9/howto/static-files/#serving-files-uploaded-by-a-user-during-development
fuente
Aquí lo que hice en Django 2.0. Establecer primero MEDIA_ROOT un MEDIA_URL en
setting.py
A continuación, Habilitar el
media
context_processors
enTEMPLATE_CONTEXT_PROCESSORS
añadiendoSu
media context processor
está habilitado, ahora cadaRequestContext
contendrá una variableMEDIA_URL
.Ahora puedes acceder a esto en tu
template_name.html
fuente
Si. Para el desarrollo, es tan fácil como agregar esto a su URLconf:
Sin embargo, para la producción, querrás servir los medios usando Apache, lighttpd, nginx o tu servidor web preferido.
fuente
(al menos) para Django 1.8:
Si utiliza
como se describió anteriormente, asegúrese de que no aparezca ningún patrón de URL "capturar todo", que dirija a una vista predeterminada, antes de eso en urlpatterns = []. Como .append colocará el esquema agregado al final de la lista, por supuesto solo se probará si no coincide ningún patrón de URL anterior. Puede evitarlo usando algo como esto donde el patrón de URL "catch all" se agrega al final, independientemente de la instrucción if:
fuente
Estos son los cambios que tuve que hacer para entregar archivos PDF para la aplicación de publicaciones django , usando Django 1.10.6:
Usó las mismas definiciones para directorios de medios que usted, en
settings.py
:Según lo provisto por @thisisashwanipandey, en lo principal del proyecto
urls.py
:y una modificación de la respuesta proporcionada por @ r-allela, en
settings.py
:fuente
Otro problema que probablemente enfrentará después de configurar todos sus patrones de URLconf es que la variable
{{ MEDIA_URL }}
no funcionará en sus plantillas. Para solucionar esto, en settings.py , asegúrate de agregaren su
TEMPLATE_CONTEXT_PROCESSORS
.fuente
Agregando a la respuesta de Micah Carrick para django 1.8:
fuente
TypeError: view must be a callable or a list/tuple in the case of include().
.Esto es lo que hice para lograr la representación de la imagen en DEBUG = False mode en Python 3.6 con Django 1.11
fuente
Siguiendo los pasos mencionados anteriormente para => 3.0 para el modo de depuración
Y también la parte que me sorprendió, la URL estática anterior solo funcionó en mi archivo principal del proyecto urls.py.Primero intentaba agregar a mi aplicación y me preguntaba por qué no podía ver las imágenes.
Por último, asegúrese de configurar lo siguiente:
fuente
Esto si para Django 1.10:
fuente
Tu configuración está bien. Algunos servidores web requieren especificar específicamente los archivos multimedia y los archivos de carpetas estáticas. Por ejemplo, en pythonanywhere.com debe ir a la sección 'Web' y agregar la url de las carpetas multimedia y la carpeta estática. Por ejemplo:
Sé que es tarde, pero solo para ayudar a quienes visitan este enlace debido al mismo problema;)
fuente