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