URL在Django URL中无法正确解析

时间:2016-06-13 16:57:27

标签: django django-models

我刚刚在AJAX更新中尝试了以下内容:

[服务器] / secTypes / Update

这会映射到URLS.py中的以下网址:

     url(r'^secTypes/Update/', equity.views.updateSecTypes,   name='updateSecTypes'),

在我的视图中,这不能解析为以下功能。

但是当我将URL表达式更改为:

      url(r'^su/', equity.views.updateSecTypes, name='updateSecTypes')

工作正常。

网址解析器中的内容未准确映射?这是正斜线吗?

我认为这与正则表达式相关的内容有关,所以如果有人更好地理解这一点,可以帮助我,这将是值得赞赏的。

1 个答案:

答案 0 :(得分:0)

根据评论中的网址模式,您的问题看起来就像是另一个匹配模式。

有两个简单的解决方案。

  1. 向下移动第一个模式。改变这个:

    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/',因此您需要先注意更具体的一个,然后再将更一般的一个。

    1. 通过添加$这样更新正则表达式以匹配网址字符串的结尾:

      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基于上面的示例),那么这将不起作用。