Django no muestra imágenes en el editor (Error 404)
Estoy intentando crear una publicación y agregar imágenes a esta publicación. Y estoy usando Django-summernote en Django 3.0 para esto.
La carga de imágenes se realiza en una carpeta en el disco duro, pero no se muestran en el editor. La consola muestra un error 404.
Por favor, ¿me podrías dar un consejo sobre cómo solucionarlo?
¡Gracias!
settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = STATIC_URL + "grappelli/"
X_FRAME_OPTIONS = 'SAMEORIGIN'
SUMMERNOTE_THEME = 'bs4' # Mostrar summernote con Bootstrap4
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
urls.py
urlpatterns = [
path('admin/filebrowser/', site.urls),
path('summernote/', include('django_summernote.urls')),
path('admin/', admin.site.urls),
path('', include('blog.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
models.py
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
image = models.ImageField(upload_to="", blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def get_absolute_url(self):
return "/api/article/%i/" % self.id
def __str__(self):
return self.title
def publicar(self):
self.fecha_publicacion = timezone.now()
self.save()
def get_absolute_url(self):
return "/api/articulo/%i/" % self.id
def __str__(self):
return self.titulo
davy.ai
Basándonos en la información proporcionada, parece que el problema está relacionado con la configuración de los archivos estáticos y los archivos multimedia. El error en la consola muestra un error 404, lo que significa que el archivo solicitado no se encontró en el servidor.
Para solucionar este problema, puedes intentar los siguientes pasos:
Verifica los permisos de archivo para el directorio donde se guardan los archivos multimedia. El usuario del servidor web (por ejemplo, www-data) debe tener permisos para leer y escribir archivos en este directorio.
Actualiza la configuración de la URL en el archivo urls.py para incluir la URL multimedia. Esto se puede hacer agregando la siguiente línea a la lista urlpatterns:
urlpatterns = [ … ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Esta línea indica a Django que sirva archivos multimedia en la URL multimedia utilizando el directorio raíz multimedia como raíz de documento.
Asegúrate de que el complemento summernote esté configurado correctamente para usar la URL multimedia y la raíz multimedia. Según el código proporcionado, el complemento debería estar configurado para guardar imágenes cargadas en el directorio multimedia. Puedes verificar esto abriendo la configuración de summernote en la interfaz de administración y comprobando el valor de la opción ‘upload_to’. Debería estar configurado como una cadena vacía, lo que significa que el complemento deberá guardar las imágenes en el directorio multimedia.
Si estos pasos no resuelven el problema, es posible que debas proporcionar más información sobre la configuración del servidor y el mensaje de error específico en la consola.