在Django2.x的版本中,使用重定向的时候可能会出现‘set’ object is not reversible的错误,这个时候我们就需要查看相对应的应用里面urls的模板了:
正确的
from django.urls import path, re_path from app import views app_name = 'app' urlpatterns = [ re_path(r'^hello/(?P<year>\d+)/', views.hello), path('login/', views.login), path('reg/', views.reg, name='reg'), ]
报错的
from django.urls import path, re_path from app import views app_name = 'app' urlpatterns = { re_path(r'^hello/(?P<year>\d+)/', views.hello), path('login/', views.login), path('reg/', views.reg, name='reg'), }
如果不仔细看的话,是看不出来的..唯一的不同就是在urlpatterns =
后面正确的后面是”[]”中括号,报错的后面是”{}”花括号,将”{}”花括号改为”[]”改为中括号就可以完美的解决这问题了
还有一种错误是我们在使用url反向解析的时候,乍一看都没错,可是他却报了错:Specifying a namespace in include()withou providing an app_name这个时候我们需要在你所创建的应用下的urls里面的urlpatterns =
的上面添加一行app_name = '应用名'
,看上面的那个就是了