django - Overriding AppConfig.ready() -


django 1.9.6.

trying catch basics of django. namely how applications work. docs: https://docs.djangoproject.com/en/1.9/ref/applications/#methods

and in code of class appconfig can read:

def ready(self):     """     override method in subclasses run code when django starts.     """ 

well, example:

my_app/apps.py

class myappconfig(appconfig):     name = 'my_app'      def ready(self):         print('my app') 

i want make ready method work. is, when django finds my_app, let run ready method.

the app registered in installed_apps.

i execute 'python manage.py runserver'. , nothing printed.

if place breakpoint inside ready method, debugger don't stop there.

could me: mistake in understanding here. thank in advance.

installed_apps = [     'django.contrib.admin',     'django.contrib.auth',     'django.contrib.contenttypes',     'django.contrib.sessions',     'django.contrib.messages',     'django.contrib.staticfiles',     'my_app', ] 

and created view

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') ] 

well, view working. means application registered.

you need 1 of 2 things. either explicitly appconfig want in installed_apps:

installed_apps = [     'my_app.apps.myappconfig' ] 

or, define default_app_config in __init__.py of app:

# my_app/__init__.py default_app_config = 'my_app.apps.myappconfig' 

(and leave installed_apps as-is).

as django can't find appconfig app , assumes there isn't one. views etc. work, ready() method never called.

here's relevant section of documentation.


Comments

Popular posts from this blog

scala - 'wrong top statement declaration' when using slick in IntelliJ -

c# - DevExpress.Wpf.Grid.InfiniteGridSizeException was unhandled -

PySide and Qt Properties: Connecting signals from Python to QML -