tarantino - django tutorial
AnulaciĆ³n de AppConfig.ready() (1)
Tratando de entender lo básico de Django. Es decir, cómo funcionan las aplicaciones. Los documentos: https://docs.djangoproject.com/en/stable/ref/applications/#methods
Y en el código de la clase AppConfig podemos leer:
def ready(self):
"""
Override this method in subclasses to run code when Django starts.
"""
Bueno, este es mi ejemplo:
my_app / apps.py
class MyAppConfig(AppConfig):
name = ''my_app''
def ready(self):
print(''My app'')
Solo quiero que el método listo funcione. Es decir, cuando Django encuentre my_app, deje que ejecute el método listo.
La aplicación está registrada en INSTALLED_APPS.
Ejecuto ''python manage.py runserver''. Y nada está impreso.
Si coloco un punto de interrupción dentro del método listo, el depurador no se detiene allí.
¿Podrías ayudarme? ¿Cuál es mi error al entender aquí? Gracias de antemano.
INSTALLED_APPS = [
''django.contrib.admin'',
''django.contrib.auth'',
''django.contrib.contenttypes'',
''django.contrib.sessions'',
''django.contrib.messages'',
''django.contrib.staticfiles'',
''my_app'',
]
Y creé una vista
my_app / views.py
def index(request):
print(''Print index'')
urls.py
urlpatterns = [
url(r''^admin/'', admin.site.urls),
url(r''^$'', my_app_views.index, name=''home'')
]
Bueno, la vista está funcionando. Esto significa que la aplicación está registrada.
Tienes que hacer una de dos cosas. Indique explícitamente qué AppConfig
desea en INSTALLED_APPS
:
INSTALLED_APPS = [
''my_app.apps.MyAppConfig''
]
O bien, defina un default_app_config
en el __init__.py
de su aplicación:
# my_app/__init__.py
default_app_config = ''my_app.apps.MyAppConfig''
(y deje INSTALLED_APPS
como está).
Como actualmente, Django no puede encontrar ningún AppConfig
para la aplicación y simplemente asume que no hay uno. Entonces sus vistas, etc. funcionarán, pero nunca se llamará al método ready()
.
Aquí está la sección relevante de la documentación .