我刚刚在AJAX更新中尝试了以下内容:
[服务器] / secTypes / Update
这会映射到URLS.py中的以下网址:
url(r'^secTypes/Update/', equity.views.updateSecTypes, name='updateSecTypes'),
在我的视图中,这不能解析为以下功能。
但是当我将URL表达式更改为:
时 url(r'^su/', equity.views.updateSecTypes, name='updateSecTypes')
工作正常。
网址解析器中的内容未准确映射?这是正斜线吗?
我认为这与正则表达式相关的内容有关,所以如果有人更好地理解这一点,可以帮助我,这将是值得赞赏的。
答案 0 :(得分:0)
根据评论中的网址模式,您的问题看起来就像是另一个匹配模式。
有两个简单的解决方案。
向下移动第一个模式。改变这个:
url(r'^secTypes/', equity.views.getSecTypes, name='getSecTypes'),
url(r'^secTypesAll/', equity.views.getSecTypesAll, name='getSecTypesAll'),
url(r'^secTypes/Update/', equity.views.updateSecTypes, name='updateSecTypes'),
url(r'^secTypes/Delete/', equity.views.deleteSecTypes, name='deleteSecTypes'),
url(r'^secTypes/Create/', equity.views.createSecTypes, name='createSecTypes'),
到此:
url(r'^secTypesAll/', equity.views.getSecTypesAll, name='getSecTypesAll'),
url(r'^secTypes/Update/', equity.views.updateSecTypes, name='updateSecTypes'),
url(r'^secTypes/Delete/', equity.views.deleteSecTypes, name='deleteSecTypes'),
url(r'^secTypes/Create/', equity.views.createSecTypes, name='createSecTypes'),
url(r'^secTypes/', equity.views.getSecTypes, name='getSecTypes'),
在解析URL模式时,顺序很重要,如果前一个匹配,则不处理以下内容。
r'^secTypes/'
和r'^secTypes/Update/'
都匹配字符串'secTypes/Update/'
,因此您需要先注意更具体的一个,然后再将更一般的一个。
通过添加$
这样更新正则表达式以匹配网址字符串的结尾:
url(r'^secTypes/$', equity.views.getSecTypes, name='getSecTypes'),
url(r'^secTypesAll/$', equity.views.getSecTypesAll, name='getSecTypesAll'),
url(r'^secTypes/Update/$', equity.views.updateSecTypes, name='updateSecTypes'),
url(r'^secTypes/Delete/$', equity.views.deleteSecTypes, name='deleteSecTypes'),
url(r'^secTypes/Create/$', equity.views.createSecTypes, name='createSecTypes'),
这是首选解决方案,因为它会阻止Django匹配像secTypes/Update/foobar
但是,如果视图中的逻辑在URL模式结束后专门使用子字符串(例如foobar
基于上面的示例),那么这将不起作用。