Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur « TypeError : View Must Be Callable » dans Django 1.10 ?

Comment résoudre l'erreur « TypeError : View Must Be Callable » dans Django 1.10 ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-22 08:00:03902parcourir

How to Resolve the

TypeError : la vue doit être appelable dans Django 1.10

Présentation :

Lors de la mise à niveau vers Django 1.10, les utilisateurs peuvent rencontrer une erreur indiquant : "la vue doit être un appelable ou une liste/tuple dans le cas d'include()." Cette erreur se produit en raison de changements dans la façon dont Django gère les spécifications de vue dans les modèles d'URL.

Cause :

À partir de Django 1.10, la spécification des vues sous forme de chaînes ('myapp.views .home') n'est plus pris en charge. Django exige désormais que les appelables de vue soient explicitement importés et inclus dans les modèles d'URL.

Solution :

1. Importer et spécifier les appelables de vue :

Modifiez les modèles d'URL pour inclure les appelables de vue importés. Si les modèles manquent de noms, pensez à les ajouter pour garantir une inversion correcte des URL.

<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. Module d'importation de vues :

Pour les projets comportant de nombreuses vues, importer chaque vue individuellement peut devenir fastidieux. Vous pouvez également envisager d'importer l'intégralité du module de vues depuis l'application.

<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>

Utilisation d'Alias :

Notez l'utilisation des instructions as (par exemple, as myapp_views) pour importer modules à vues multiples sans conflits de noms.

Informations supplémentaires :

  • Pour une explication détaillée des répartiteurs d'URL dans Django, reportez-vous à la documentation officielle.
  • Assurez-vous que le module de vues de l'application est correctement nommé et importé dans le fichier de paramètres (par exemple, INSTALLED_APPS).
  • Si l'erreur persiste malgré les solutions ci-dessus, recherchez d'éventuelles fautes de frappe ou erreurs de syntaxe dans les modèles d'URL. .

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