如何解决 Django 1.10 中的'TypeError: View Must Be Callable”错误?

Barbara Streisand
发布: 2024-10-22 08:00:03
原创
911 人浏览过

How to Resolve the

TypeError: View Must Be Callable in Django 1.10

概述:

升级到 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 中 URL 调度程序的详细说明,请参阅官方文档。
  • 确保应用程序的视图模块正确命名并导入到设置文件中(例如 INSTALLED_APPS)。
  • 如果尽管采取了上述解决方案,错误仍然存​​在,请检查 URL 模式中是否有任何拼写错误或语法错误.

以上是如何解决 Django 1.10 中的'TypeError: View Must Be Callable”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!