Fehler in Django-URLs: Verständnis des „TypeError: view must be a callable or a list/tuple in the case of include()“
Ein Upgrade auf Django 1.10 kann zu einem Fehler im Zusammenhang mit dem Format der Ansichtsdefinitionen in URL-Mustern führen:
TypeError: view must be a callable or a list/tuple in the case of include().
Ursache:
Vor Django 1.10, Ansichten können als Zeichenfolgen angegeben werden, die sich auf ihre Position innerhalb eines Moduls beziehen, z. B. „myapp.views.home“. Diese Vorgehensweise wird jedoch nicht mehr unterstützt.
Lösung:
In Django 1.10 und höher müssen Ansichtsdefinitionen als aufrufbare Funktionen oder als Liste/Tupel von aufrufbaren Funktionen bereitgestellt werden Funktionen. Das bedeutet, dass Sie entweder:
1. Importieren Sie die Ansichtsfunktion:
Aktualisieren Sie Ihre urls.py, um die Ansichtsfunktion explizit zu importieren und als aufrufbare Funktion bereitzustellen:
<code class="python">from myapp.views import home urlpatterns = [ url(r'^$', home, name='home'), ]</code>
2. Importieren Sie das Ansichtsmodul und verwenden Sie Aliase:
Wenn Sie mehrere Ansichten in einem einzelnen Modul haben, können Sie das gesamte Modul importieren und Aliase verwenden, um auf die spezifischen Ansichten zuzugreifen:
<code class="python">from myapp import views as myapp_views urlpatterns = [ url(r'^$', myapp_views.home, name='home'), ]</code>
Ansichten aus anderen Apps importieren:
Wenn sich die Ansichten, die Sie verwenden möchten, in einer anderen App befinden, können Sie das Ansichtsmodul der App importieren und die gleiche Technik wie oben verwenden:
<code class="python">from another_app import views as another_app_views urlpatterns = [ url(r'^$', another_app_views.my_view, name='my_view'), ]</code>
Hinweis: Beim Importieren von Ansichten auf diese Weise wird empfohlen, Aliase zu verwenden (z. B. another_app_views), um Konflikte mit in Ihrer eigenen App definierten Ansichten zu vermeiden.
Zusätzliche Informationen:
Weitere Informationen zum Definieren von URL-Mustern in Django finden Sie in der Dokumentation zum Django URL Dispatcher: https://docs.djangoproject.com/en/stable/topics/http /urls/
Das obige ist der detaillierte Inhalt vonWie behebt man „TypeError: view must be a callable or list/tuple' in Django-URLs?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!