我的博客

这个问题在网上随便一搜就有解决办法,说是把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内容是

urlpatterns = {
    path('admin/', admin.site.urls),
    path('app1/', include('app1.urls')),
    path('app2/', include('app2.urls')),
}

app1里面的urls.py内容是

app_name = 'app1'

urlpatterns = {
   path('f/',views.f, name='f'),
}

views里面f的方法很简单,就是显示hello,这个就不单独写了

然后是app2里面的urls.py内容

app_name = 'app2'

urlpatterns = {
   path('f2/',views.f2, name='f2'),
}

这个views里面的f2方法是调用a.html这个页面,也就是

def f2(request):
  return render(request,'f2.html')

再说说a.html这个

{% load static %}
<html>
  <body>
    <a href="{% url 'app2:f2' %}">test</a>
  </body>
</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,页面依然报同一个错误

原文地址:https://www.cnblogs.com/xiu123/p/16784121.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性