Django URLs TypeError: 보기는 include()인 경우 호출 가능 또는 목록/튜플이어야 합니다.
장고 1.10으로 업그레이드하면 다음 오류가 발생합니다.
TypeError: view must be a callable or a list/tuple in the case of include().
제 urls.py 은 다음과 같습니다.
from django.conf.urls import include, url
urlpatterns = [
url(r'^$', 'myapp.views.home'),
url(r'^contact/$', 'myapp.views.contact'),
url(r'^login/$', 'django.contrib.auth.views.login'),
]
전체 추적은 다음과 같습니다.
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
for 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 be a callable or a list/tuple in the case of include().')
TypeError: view must be a callable or a list/tuple in the case of include().
Django 1.10은 더 이상 보기를 문자열로 지정할 수 없습니다(예:'myapp.views.home'
사용자의 URL 패턴을 입력합니다.
해결책은 당신의 것을 업데이트하는 것입니다.urls.py
호출 가능한 뷰를 포함합니다.즉, 보기를 가져올 때 해당 보기를 가져와야 합니다.urls.py
. URL 패턴에 이름이 없는 경우 점선 파이썬 경로로 되돌릴 수 없으므로 지금이 하나를 추가하기에 좋은 시기입니다.
from django.conf.urls import include, url
from django.contrib.auth.views import login
from myapp.views import home, contact
urlpatterns = [
url(r'^$', home, name='home'),
url(r'^contact/$', contact, name='contact'),
url(r'^login/$', login, name='login'),
]
조회 수가 많으면 개별적으로 수입하는 것이 불편할 수 있습니다.앱에서 뷰 모듈을 가져오는 것도 대안입니다.
from django.conf.urls import include, url
from django.contrib.auth import views as auth_views
from myapp import views as 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'),
]
우리가 사용해 온 것을 참고합니다.as myapp_views
그리고.as auth_views
, 우리가 수입할 수 있게 해주는 것은views.py
여러 앱에서 충돌 없이 사용할 수 있습니다.
자세한 내용은 장고 URL 디스패처 문서를 참조하십시오.urlpatterns
.
이 오류는 단지 다음과 같은 것을 의미합니다.myapp.views.home
함수처럼 부를 수 있는 것이 아닙니다.그것은 사실 끈입니다.당신의 솔루션이 장고 1.9에서 작동하지만, 그럼에도 불구하고 이것이 버전 1.10 이후부터 더 이상 사용되지 않을 것이라는 경고를 던지는데, 이것이 정확히 일어난 일입니다.@Alasdair의 이전 솔루션은 다음 중 하나를 통해 필요한 뷰 기능을 스크립트로 가져옵니다.from myapp import views as myapp_views
아니면from myapp.views import home, contact
뷰와 모듈의 이름 충돌이 있는 경우에도 이 오류가 발생할 수 있습니다.보기 폴더에 보기 파일을 배포할 때 오류가 발생했습니다./views/view1.py, /views/view2.py
그리고 view2.py 에 있는 table.py 이라는 모델을 가져왔는데, view1.py 에 있는 보기의 이름이었습니다.뷰 이름을 지정하면 다음과 같이 기능합니다. v_table(request,id)
도와준
혹시 단말기에 오류가 발생했을 경우를 대비해 서버를 정지했다가 다시 실행하면 작동할 가능성이 있습니다.Windows(윈도우)
ctrl+c
서버를 중지한 후 서버를 다시 실행합니다.
python manage.py runserver
건배.
당신의 코드는.
urlpatterns = [
url(r'^$', 'myapp.views.home'),
url(r'^contact/$', 'myapp.views.contact'),
url(r'^login/$', 'django.contrib.auth.views.login'),
]
가져올 때 다음으로 변경include()
함수:
urlpatterns = [
url(r'^$', views.home),
url(r'^contact/$', views.contact),
url(r'^login/$', views.login),
]
바꾸다register = template.Library()
로.registerr = template.Library()
내 문제를 해결했습니다.
언급URL : https://stackoverflow.com/questions/38744285/django-urls-typeerror-view-must-be-a-callable-or-a-list-tuple-in-the-case-of-in
'programing' 카테고리의 다른 글
D3.js(IE, Safari 및 chrome)로 SVG를 만든 후 SVG 파일을 저장/내보내는 방법은 무엇입니까? (0) | 2023.10.08 |
---|---|
첫번째를 제외한 모든 'tr'을 선택합니다. (0) | 2023.10.08 |
작동하지 않는 자바스크립트 규칙은 무엇입니까? (0) | 2023.10.03 |
MySQL에서 그룹화된 순위를 수행하는 방법 (0) | 2023.10.03 |
Chrome에서는 작동하지만 Safari에서는 작동하지 않습니다.잘못된 정규식: 잘못된 그룹 지정자 이름 /(?<=\/)([^#]+)(?=#*)/ (0) | 2023.10.03 |