es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

screenshot from console

Tags:  , , , ,

Answer

  1. Avatar for 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:

    1. Asegúrate de que la URL multimedia y la ruta multimedia estén configuradas correctamente en el archivo de configuración. Según el código proporcionado, la URL multimedia es “/media/” y la raíz multimedia está configurada en un directorio llamado “media” en el directorio del proyecto. Asegúrate de que el directorio exista y sea legible por el servidor.
    2. 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.

    3. 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.

    4. 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.

Comments are closed.