python - Django URLs error: view must be a callable or a list/tuple in the case of include() -


after upgrading django 1.10, error:

typeerror: view must callable or list/tuple in case of include(). 

my urls.py follows:

urlpatterns = [     url(r'^$', 'myapp.views.home'),     url(r'^contact/$', 'myapp.views.contact'),     url(r'^login/$', 'django.contrib.auth.views.login'), ] 

the full traceback is:

traceback (most recent call last):   file "/users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper     fn(*args, **kwargs)   file "/users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 121, in inner_run     self.check(display_num_errors=true)   file "/users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/management/base.py", line 385, in check     include_deployment_checks=include_deployment_checks,   file "/users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/management/base.py", line 372, in _run_checks     return checks.run_checks(**kwargs)   file "/users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/checks/registry.py", line 81, in run_checks     new_errors = check(app_configs=app_configs)   file "/users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/checks/urls.py", line 14, in check_url_config     return check_resolver(resolver)   file "/users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/core/checks/urls.py", line 24, in check_resolver     pattern in resolver.url_patterns:   file "/users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/utils/functional.py", line 35, in __get__     res = instance.__dict__[self.name] = self.func(instance)   file "/users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/urls/resolvers.py", line 310, in url_patterns     patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)   file "/users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/utils/functional.py", line 35, in __get__     res = instance.__dict__[self.name] = self.func(instance)   file "/users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/urls/resolvers.py", line 303, in urlconf_module     return import_module(self.urlconf_name)   file "/system/library/frameworks/python.framework/versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module     __import__(name)   file "/users/alasdair/dev/urlproject/urlproject/urls.py", line 28, in <module>     url(r'^$', 'myapp.views.home'),   file "/users/alasdair/.virtualenvs/django110/lib/python2.7/site-packages/django/conf/urls/__init__.py", line 85, in url     raise typeerror('view must callable or list/tuple in case of include().') typeerror: view must callable or list/tuple in case of include(). 

django 1.10 no longer allows specify views string (e.g. 'myapp.views.home') in url patterns.

the solution update urls.py include view callable. means have import view in urls.py. if url patterns don't have names, time add one, because reversing dotted python path no longer works.

from django.contrib.auth.views import login myapp.views import home, contact  urlpatterns = [     url(r'^$', home, name='home'),     url(r'^contact/$', contact, name='contact'),     url(r'^login/$', login, name='login'), ] 

if there many views, importing them individually can inconvenient. alternative import views module app.

from django.contrib.auth import views auth_views myapp import views myapp_views  urlpatterns = [     url(r'^$', myapp_views.home, name='home'),     url(r'^contact/$', myapp_views.contact, name='contact'),     url(r'^login/$', auth_views.login, name='login'), ] 

note have used as myapp_views , as auth_views, allows import views.py multiple apps without them clashing.

see django url dispatcher docs more information urlpatterns.


Comments

Popular posts from this blog

javascript - Thinglink image not visible until browser resize -

firebird - Error "invalid transaction handle (expecting explicit transaction start)" executing script from Delphi -

mongodb - How to keep track of users making Stripe Payments -