<kbd id='woaibaidu'></kbd><address id='woaibaidu'><style id='woaibaidu'></style></address><button id='woaibaidu'></button>

          当前位置:主页 > 脚本专栏 > python >
            Django框架教程之正则表达式URL误区详解
            2018-01-29 22:14 发布 次浏览

          前言

          应用Django开发网站,可以设计出十分优美的url规则,假如url的婚配规则(包括正则表达式)组织得比拟好,view的构造就会比拟明晰,比拟容易保护。但这其中能够会有1些误区,上面就来给各人总结下。

          成绩:

          我学习的视频大约是2015年录的,外面用的Django版本比拟老关于正则表达式URL这1块都是用的url(“url(r'^admin/', admin.site.urls),”)办法。而我本人训练的时分是下载的最新版本,而正则表达式URL用确实实path(“path('admin/', admin.site.urls),”)办法。刚开端1对以婚配的时分都能乐成,就没太在乎这个细节。

          直到前面正则婚配多个时(path('detail-(\d+).html', views.detail),) ,总是报错“page not found”。我反省了好几遍,明显如出一辙怎样就不行尼?其实看色彩就觉得有点不太对,但又不晓得是甚么缘由。厥后查了相干版本文档以后,终究找到处理的办法了!

          上面附上相干代码:

          1.这个是最重要的py文件,其他的就差不多了。

           

          2.其他相干代码:

          views.py

          def detail(request,nid):
           # print(nid)
           # return HttpResponse(nid)
           detail_info = USER_DICT[nid]
           return render(request,'detail.html',{'detail_info':detail_info})

          index.html

          <!DOCTYPE html>
          <html lang="en">
          <head>
           <meta charset="UTF⑻">
           <title>Title</title>
          </head>
          <body>
           <ul>
            {% for k,v in user_dict.items %}
             <li><a target="_blank" href="/detail-{{ k }}.html" rel="external nofollow" >{{ v.name }}</a></li>
            {% endfor %}
           </ul>
          </body>
          </html>

          detail.py

          <!DOCTYPE html>
          <html lang="en">
          <head>
           <meta charset="UTF⑻">
           <title>Title</title>
          </head>
          <body>
           <h1>详细信息</h1>
           <h6>用户名:{{ detail_info.name }}</h6>
           <h6>邮箱:{{ detail_info.email }}</h6>
          </body>
          </html>

          另外,URL要通报多个数据时分,严厉依照顺序通报的,而且函数界说必需有相应个数的参数,固然可以应用万能参数接纳恣意个参与

          普通状况下应用的正则表达式是:url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+)', views.detail),

          而对应的detail函数的是这样的:def detail(request, *args, **kwargs):pass

          总结

          以上就是这篇文章的全部内容了,希望本文的内容对各人的学习或许任务具有1定的参考学习价值,假如有疑问各人可以留言交换,谢谢各人对聚合网的支持。