django 报错 'set' object is not reversible 解决

打印 上一主题 下一主题

主题 812|帖子 812|积分 2436

我的博客
这个问题在网上随便一搜就有解决办法,说是把urls.py里面的urlpatterns = 这部分的{}改成[]就可以了,想想也对,毕竟里面是个list也不是个dict
先说下我的project内容
我用的命令是
python manage.py startproject myweb
python manage.py startapp app1
python manage.py startapp app2
创建了一个project和2个app
我的myweb里面的urls.py内容是
  1. urlpatterns = {
  2.     path('admin/', admin.site.urls),
  3.     path('app1/', include('app1.urls')),
  4.     path('app2/', include('app2.urls')),
  5. }
复制代码
app1里面的urls.py内容是
  1. app_name = 'app1'
  2. urlpatterns = {
  3.    path('f/',views.f, name='f'),
  4. }
复制代码
views里面f的方法很简单,就是显示hello,这个就不单独写了
然后是app2里面的urls.py内容
  1. app_name = 'app2'
  2. urlpatterns = {
  3.    path('f2/',views.f2, name='f2'),
  4. }
复制代码
这个views里面的f2方法是调用a.html这个页面,也就是
  1. def f2(request):
  2.   return render(request,'f2.html')
复制代码
再说说a.html这个
  1. {% load static %}
  2. <html>
  3.   <body>
  4.     <a target="_blank" href="https://www.cnblogs.com/{% url 'app2:f2' %}">test</a>
  5.   </body>
  6. </html>
复制代码
好了,一切准备就绪,有心的同学一定看到了myweb和app1、app2里面的urls.py全都是{}
测试下页面,结果报错'set' object is not reversible
报错内容指向{% url 'app2:f2' %}
那么我就按照网上的说法,把myweb下的urls.py里面的{}改成了[]
结果还是不行,这时候我其实没有想到是因为app1和app2的原因,就又搜了一下,结果有人说要改{% url 'app2:f2' %}改成[% url 'app2:f2' %]
于是我改了,结果页面居然正常了,正当我满心欢喜的测试的时候,意外出现了,点击test直接跳转到http://127.0.0.1[% url 'app2:f2' %]
我勒个去,这是什么玩意,那尼玛这个链接有个毛用,于是又改了回来,还是报错
经过深思熟虑和再三的验证,这时候发现了app1和app2的倪端,本着试一试的想法,把app1和app2里面urls.py中的{}也给改成了[]
再次测试,正常显示,并且链接正确,直到这里,整个故事就算结束了
可是有一点我想不明白,我用的app2和myweb的urls.py和app1有什么关系,问题是我不改app1,页面依然报同一个错误

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表