概述:
升级到 Django 1.10 后,用户可能会遇到错误指出“在 include() 的情况下,视图必须是可调用的或列表/元组。”此错误是由于 Django 处理 URL 模式中的视图规范的方式发生变化而发生的。
原因:
从 Django 1.10 开始,将视图指定为字符串 ('myapp.views) .home') 不再受支持。 Django 现在要求显式导入视图可调用对象并将其包含在 URL 模式中。
解决方案:
1.导入并指定视图可调用对象:
修改 URL 模式以包含导入的视图可调用对象。如果模式缺少名称,请考虑添加它们以确保正确的 URL 反转。
<code class="python">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'), ]</code>
2.导入视图模块:
对于具有大量视图的项目,单独导入每个视图可能会变得很麻烦。或者,考虑从应用程序导入整个视图模块。
<code class="python">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'), ]</code>
使用别名:
注意使用 as 语句(例如,as myapp_views)进行导入多个视图模块,没有名称冲突。
附加信息:
以上是如何解决 Django 1.10 中的'TypeError: View Must Be Callable”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!