在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 = '应用名',看上面的那个就是了