前言
使用Django开发网站,我们可以设计非常漂亮的url规则。如果URL(包括正则表达式)的匹配规则组织得很好,视图的结构会更清晰,更容易维护。但是,可能会有一些误解。让我们总结如下。
问题:
我研究的视频大概是2015年录制的,里面用的Django版本比较老。正则表达式URL使用了URL ("URL (r' admin/',admin . site . URL)")方法。当我自己练习的时候,它是下载的最新版本,正则表达式URL使用了精确的路径(“路径(' admin/',admin . site . URL),”)方法。刚开始的时候,一对在搭配的时候是可以成功的,所以不太注意这个细节。
直到有多个常规匹配项(路径(' detail-( d))。html '视图。详细信息),则始终会报告错误“找不到页面”。我检查过几次,但完全一样。为什么不能用?其实看颜色感觉有点不对,但是不知道为什么。后来查了相关版本文档,终于找到了解决办法!
相关代码如下:
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-8 ' title title/title/head dy ul { % for k,v in user _ dict . items % } lia target=' _ blank ' href='/detail-{ { k } }。html“rel=”外部no follow“{ v . name } }/a/Li { % end for % }/ul/body/html detail . py
!doctype html lang=' en ' head meta charset=' utf-8 ' title title/title/head body h1 details/h1 h6用户名:{{ detail_info.name }}/h6 h6邮箱:{ { detail _ info . email } }/H6/body/html此外,当一个URL传递多个数据时,必须按照严格的顺序传递,函数定义必须有相应数量的参数。当然,您可以使用通用参数来接收任意数量的参与者
正常情况下使用的正则表达式是:URL (r' detail-(?Pnidd )-(?Puidd '),views.detail),
而对应的detail函数是这样的:defdetail (request,* args,* * kwargs) : pass
摘要
以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。