Maison >développement back-end >Tutoriel Python >Comment corriger \'TypeError : la vue doit être appelable ou une liste/tuple\' dans les URL Django ?

Comment corriger \'TypeError : la vue doit être appelable ou une liste/tuple\' dans les URL Django ?

DDD
DDDoriginal
2024-10-22 08:05:30788parcourir

How to Fix

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn