1
felixzhu 2015-09-19 17:05:28 +08:00
URL 正则为什么要去匹配参数
|
2
guoqiao 2015-09-19 17:26:16 +08:00
1. 匹配数字应该是\d, 而不是\w
2. django 定义 url 的时候并不会理会问号后面的 get 参数, 你应该自己通过 request.GET.get ('key')获取. 3. 对于变长的数字参数使用 \d+即可, 无需指定固定位数. 4. 你的 url 里括号不匹配. 正确的格式是: url (r'^book/(?P<user_id>\d+)/(?P<book_id>\d+)/$', views.book, name='book') |
3
Damnever 2015-09-19 21:30:05 +08:00
不知道 http://127.0.0.1/book/?user_id=12345/1234567890/ 是几个意思,? 后面的不是 query string 么?
|
4
cheerzeng OP @Damnever user_id 是 query string ,然后十位的那个是传给 view 的 book_id.
我应该没说错吧 |
5
cheerzeng OP @felixzhu 因为我想把 user_id 做成 query string 的形式,然后用正则匹配中间的那串? user_id=12345
|
6
cheerzeng OP @guoqiao
1. 这里是个笔误,因为真实代码是中间包含字符跟下划线之类的,把问题简化了一下,忘记改正则了,谢谢提醒。 2. 是的,如果不用? user_id = 12345 这种链接的话, 用两个? P 的方法确实是通过 get 可以取到。目前用的就是这个。你的意思是用 http://127.0.0.1/book/?user_id=12345/1234567890/ 这种形式,也是可以用你说的 url (r'^book/(?P<user_id>\d+)/(?P<book_id>\d+)/$', views.book, name='book') 这个匹配? 我的理解是 http://127.0.0.1/book/?user_id=12345 应该不会匹配到(?P<user_id>\d+) 吧?我回头试试 3.学习了。 4, 应该也是笔误。 |