Django URL の「TypeError: ビューは呼び出し可能またはリスト/タプルである必要があります」を修正する方法?

DDD
リリース: 2024-10-22 08:05:30
オリジナル
782 人が閲覧しました

How to Fix

Django URL のエラー:「TypeError: include() の場合、ビューは呼び出し可能かリスト/タプルである必要があります」について理解

Django 1.10 にアップグレードすると、URL パターンのビュー定義の形式に関連するエラーが発生する可能性があります:

TypeError: view must be a callable or a list/tuple in the case of include().
ログイン後にコピー

原因:

Django 1.10 より前では、ビューは、「myapp.views.home」など、モジュール内の位置を参照する文字列として指定できます。ただし、この方法はサポートされなくなりました。

解決策:

Django 1.10 以降では、ビュー定義は呼び出し可能な関数、または呼び出し可能な関数のリスト/タプルとして提供される必要があります。機能。これは、次のいずれかを行う必要があることを意味します:

1.ビュー関数をインポートします:

urls.py を更新してビュー関数を明示的にインポートし、呼び出し可能関数として提供します:

<code class="python">from myapp.views import home

urlpatterns = [
    url(r'^$', home, name='home'),
]</code>
ログイン後にコピー

2.ビュー モジュールをインポートしてエイリアスを使用する:

単一モジュールに複数のビューがある場合、モジュール全体をインポートし、エイリアスを使用して特定のビューにアクセスできます:

<code class="python">from myapp import views as myapp_views

urlpatterns = [
    url(r'^$', myapp_views.home, name='home'),
]</code>
ログイン後にコピー

他のアプリからのビューのインポート:

使用したいビューが別のアプリにある場合は、アプリのビュー モジュールをインポートして、上記と同じ手法を使用できます:

<code class="python">from another_app import views as another_app_views

urlpatterns = [
    url(r'^$', another_app_views.my_view, name='my_view'),
]</code>
ログイン後にコピー

注: この方法でビューをインポートするときは、独自のアプリで定義されたビューとの競合を避けるために、エイリアス (another_app_views など) を使用することをお勧めします。

追加情報:

Django での URL パターンの定義の詳細については、Django URL ディスパッチャーのドキュメントを参照してください: https://docs.djangoproject.com/en/stable/topics/http /urls/

以上がDjango URL の「TypeError: ビューは呼び出し可能またはリスト/タプルである必要があります」を修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート