web-dev-qa-db-fra.com

Nouveau format d'URL dans Django 1.9

J'ai récemment mis à niveau mon projet Django vers la version 1.9.

Lorsque j'essaie d'exécuter migrate, j'obtiens les deux erreurs suivantes:

  1. Support for string view arguments to url() is deprecated and will be removed in Django 1.10 (got app.views.about). Pass the callable instead.
  2. Django.conf.urls.patterns() is deprecated and will be removed in Django 1.10. Update your urlpatterns to be a list of Django.conf.urls.url() instances instead.

Quelqu'un pourrait-il me montrer la syntaxe appropriée de la façon de procéder? Un bref échantillon de mon urls.py est inférieure à:

urlpatterns = patterns('',
    url(r'^about/$', 'app.views.about',
        name='about'),
)

urlpatterns += patterns('accounts.views',
    url(r'^signin/$', 'auth_login',
        name='login'),
)

Je vous remercie!

20
jape

Importez directement vos vues ou vos modules de vues:

from apps.views import about
from accounts import views as account_views

N'utilisez pas du tout patterns, utilisez simplement une liste ou un Tuple:

urlpatterns = [
    url(r'^about/$', about,
        name='about'),
]

urlpatterns += [
    url(r'^signin/$', account_views.auth_login,
        name='login'),
]
26
Lorenzo Peña

Vous devez supprimer les guillemets autour du nom des vues. Donc votre code sera comme ça

urlpatterns = patterns('',
    url(r'^about/$', app.views.about, #without quote!
        name='about'),
)

Point 2, utilisez des listes pour que votre code se transforme en

urlpatterns = [
        url(r'^about/$', app.views.about, #without quote!
            name='about'),
    ]
4
1844144