python django url问题

#-*- coding:utf-8 -*-from django.conf.urls.defaults import patternsurlpatterns = patterns(✀abc✀, (r✀save_new/$✀, ✀views.save_new✀), (r✀update/(?P<id>尀d+)/$✀,✀views.update✀), (r✀save_update/(?P<id>尀d+)/$✀,✀views.save_update✀), ---此行有问题 )十分不解 为何我的save_update的url不能对上我的views.save_update的函数如果 (r✀save_update/(?P<id>尀d+)/$✀,✀views.save_update✀), 中的save_update换掉随便如: (r✀save/(?P<id>尀d+)/$✀,✀views.save_update✀), 就没有什么问题了 个人猜测是因为上一个URL中有update,然后此url即使加了save_还是会找update这是为什么呢???十分不解
2026年09月22日 20:35
有2个网友回答
网友(1):

你这是对正则表达式不了解。第二句像现在这样写,只要URL中有update/id1这样的形式,就会送给views.update,所以第三句就没用了。正确的写法应该是在r'后面加上^,像这样
(r'^update/(?P\d+)/$','views.update'), 就只匹配以update开头的URL,这是正则表达式的基本规则。

网友(2):

我遇到过类似的问题:

urlpatterns = patterns('abc',
(r'^save /$', 'views.save'),
(r'^save_new/$','views.save_new'),

这样的话,程序运行的时候就无法调用“save_new”函数,它优先匹配到前面的“save”就不再匹配了。目前的解决办法是把二者换行。