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
Libérer: 2024-10-22 08:05:30
original
851 Les gens l'ont consulté

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().
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal