2015-12-05 13 views
17

Ho recentemente aggiornato il mio progetto Django alla versione 1.9.Nuovo formato di URL in Django 1.9

Quando provo a fare funzionare migrate, sto ottenendo i seguenti due errori:

  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.

Qualcuno potrebbe mostrarmi la sintassi corretta di come fare questo? Un breve esempio del mio urls.py è qui sotto:

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

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

Grazie!

+1

Ecco il [doc] (https://docs.djangoproject.com/en/1.9/ref/urls/#url) – styvane

risposta

24

Importa i tuoi viste direttamente, o il vostro visualizzazioni moduli:

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

Non utilizzare affatto patterns, utilizzare solo un elenco o una tupla:

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

urlpatterns += [ 
    url(r'^signin/$', account_views.auth_login, 
     name='login'), 
] 
4

È necessario rimuovere le virgolette attorno al nome della vista. Così il vostro codice sarà così

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

punto 2, utilizzare gli elenchi, in modo che il codice si trasforma per

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