Übersicht:
Beim Upgrade auf Django 1.10 können Benutzer auf Folgendes stoßen: ein Fehler, der besagt: „Ansicht muss eine aufrufbare Ansicht oder eine Liste/ein Tupel im Fall von include() sein.“ Dieser Fehler tritt aufgrund von Änderungen in der Art und Weise auf, wie Django Ansichtsspezifikationen in URL-Mustern verarbeitet.
Ursache:
Ab Django 1.10 werden Ansichten als Zeichenfolgen angegeben ('myapp.views .home‘) wird nicht mehr unterstützt. Django erfordert jetzt, dass View Callables explizit importiert und in URL-Muster einbezogen werden.
Lösung:
1. Aufrufbare Ansichtselemente importieren und angeben:
Ändern Sie die URL-Muster, um importierte aufrufbare Ansichtselemente einzuschließen. Wenn den Mustern Namen fehlen, sollten Sie erwägen, diese hinzuzufügen, um eine korrekte URL-Umkehrung sicherzustellen.
<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. Modul „Ansichten importieren“:
Bei Projekten mit zahlreichen Ansichten kann das Importieren jeder Ansicht einzeln umständlich werden. Alternativ können Sie erwägen, das gesamte Ansichtsmodul aus der App zu importieren.
<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>
Alias verwenden:
Beachten Sie die Verwendung von as-Anweisungen (z. B. as myapp_views) zum Importieren Module mit mehreren Ansichten ohne Namenskonflikte.
Zusätzliche Informationen:
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „TypeError: View Must Be Callable' in Django 1.10?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!