Django UrlResolver.reverse不适用于|&引用;非捕获组内

Django UrlResolver.reverse不适用于|&引用;非捕获组内,django,Django,在我的测试中: url = reverse('record-list') 对于我的服务/url.py: urlpatterns = [ url(r'^records/?$', RecordList.as_view(), name='record-list'), ... 它还通过以下内容加载到my project URL.py中: for app in apps['apps']: try: _module = import_module('%s.urls' %

在我的测试中:

url = reverse('record-list')
对于我的服务/url.py:

urlpatterns = [
    url(r'^records/?$', RecordList.as_view(), name='record-list'),
...
它还通过以下内容加载到my project URL.py中:

for app in apps['apps']:
    try:
        _module = import_module('%s.urls' % app)
    except:
        if settings.DEBUG:
            raise
        else:
            pass
    else:
        urlpatterns += [url(r'^api/%s(?:/|/?$)' % app, include('%s.urls' % app))]
并且得到了错误

django.core.urlresolvers.NoReverseMatch: Reverse for 'record-list' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['api/service(?:/|/?$)records/?$']

为什么URL中间的捕获组导致<代码>反转>代码>失败?

,这是因为<代码>反向>代码>的正则表达式解析器根本无法处理正则表达式中的< < /Cord>符号。它还没有实施


请参见

reverse('record-list')-无参数发送,(?:/?)/?$)需要一个参数。这是一个非捕获组,因此没有(?:/?/?$)应用程序工作时不需要参数?是的,但这会破坏此问题的目的。url(r'^pub/(?p[0-9A-Z]+)/$,?=参数。^api/%s(/?/?/?/?$)==^api/%s(/?/?/?)===api/%s(/?)第一个值?这个评论有点误导。有一个很好的理由没有这样做:给定一个有效组的选择,在反向调用中应该选择哪一个?