Maison >développement back-end >Tutoriel Python >Comment corriger \'TypeError : la vue doit être appelable ou une liste/tuple\' dans les URL Django ?
Erreur dans les URL Django : Comprendre le "TypeError : la vue doit être un appelable ou une liste/tuple dans le cas d'include()"
La mise à niveau vers Django 1.10 peut entraîner une erreur liée au format des définitions de vue dans les modèles d'URL :
TypeError: view must be a callable or a list/tuple in the case of include().
Cause :
Avant Django 1.10, les vues peuvent être spécifiées sous forme de chaînes faisant référence à leur emplacement dans un module, telles que « myapp.views.home ». Cependant, cette pratique n'est plus prise en charge.
Solution :
Dans Django 1.10 et versions ultérieures, les définitions de vue doivent être fournies sous forme de fonctions appelables ou d'une liste/tuple de fonctions appelables. fonctions. Cela signifie que vous devrez soit :
1. Importez la fonction d'affichage :
Mettez à jour votre urls.py pour importer explicitement la fonction d'affichage et fournissez-la comme appelable :
<code class="python">from myapp.views import home urlpatterns = [ url(r'^$', home, name='home'), ]</code>
2. Importez le module de vues et utilisez des alias :
Si vous avez plusieurs vues dans un seul module, vous pouvez importer l'intégralité du module et utiliser des alias pour accéder aux vues spécifiques :
<code class="python">from myapp import views as myapp_views urlpatterns = [ url(r'^$', myapp_views.home, name='home'), ]</code>
Importation de vues depuis d'autres applications :
Si les vues que vous souhaitez utiliser se trouvent dans une autre application, vous pouvez importer le module de vues de l'application et utiliser la même technique que ci-dessus :
<code class="python">from another_app import views as another_app_views urlpatterns = [ url(r'^$', another_app_views.my_view, name='my_view'), ]</code>
Remarque : Lors de l'importation de vues de cette façon, il est recommandé d'utiliser des alias (par exemple, comme another_app_views) pour éviter tout conflit avec les vues définies dans votre propre application.
Informations supplémentaires :
Pour plus de détails sur la définition des modèles d'URL dans Django, veuillez vous référer à la documentation du répartiteur d'URL Django : https://docs.djangoproject.com/en/stable/topics/http /urls/
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!