ホームページ >バックエンド開発 >Python チュートリアル >Django 1.10 の「TypeError: View Must Be Callable」エラーを解決するにはどうすればよいですか?
概要:
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 中国語 Web サイトの他の関連記事を参照してください。