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.

Habilitar los canales conduce a SuspiciousFileOperation en /

Me di cuenta de que cada vez que activo los canales de Django en mi código, obtengo el siguiente error cuando ejecuto el servidor:

SuspiciousFileOperation en /

El camino unido (C:\favicon.ico) está ubicado fuera del componente de ruta base.

Error durante la renderización del template:

Los siguientes cambios en settings.py producen el error:

INSTALLED_APPS = [
“channels”,
“django.contrib.admin”,
“django.contrib.auth”,
“django.contrib.contenttypes”,
“django.contrib.sessions”,
“django.contrib.messages”,
“django.contrib.staticfiles”,
“debug_toolbar”,
“corsheaders”,
“rest_framework”,
“rest_framework.authtoken”,
“core”,
“drf_yasg2”,
]

WSGI_APPLICATION = “app.wsgi.application”
ASGI_APPLICATION = “app.asgi.application”


Los siguientes cambios en asgi.py producen el error:

import os
from channels.routing import ProtocolTypeRouter
from django.core.asgi import get_asgi_application

os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “app.settings”)

application = ProtocolTypeRouter({
“http”: get_asgi_application(),
# Solo HTTP por ahora. (Podemos agregar otros protocolos más adelante.)
})
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error ocurre porque Django está tratando de servir el favicon (favicon.ico) desde la raíz del proyecto, lo cual está fuera de la ruta base.

    Para solucionar este error, puedes agregar las siguientes líneas a settings.py y asgi.py:

    En settings.py:

    STATIC_URL = '/static/'  # Agregar esta línea
    

    En asgi.py:

    from django.urls import path  # Agregar esta declaración de importación
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns  # Agregar esta declaración de importación
    
    import os
    
    from channels.routing import ProtocolTypeRouter
    from django.core.asgi import get_asgi_application
    
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings")
    
    application = ProtocolTypeRouter({
        "http": get_asgi_application(),
        # Solo HTTP por ahora. (Podemos agregar otros protocolos más adelante.)
    })
    
    # Agregar la siguiente línea al final del archivo
    urlpatterns = [
        path('', application),
    ]
    urlpatterns += staticfiles_urlpatterns()  # Agregar esta línea
    

    Estos cambios servirán el favicon desde el directorio static, el cual se encuentra en la ruta base del proyecto.

Comments are closed.