Python 使djangocms url解析程序不那么贪婪

Python 使djangocms url解析程序不那么贪婪,python,django,django-cms,Python,Django,Django Cms,我有一个高流量django cms网站。在同一个站点上,还有一个附加的django应用程序,带有restful api。 我有以下URL.py urlpatterns = [ url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': {'cmspages': CMSSitemap}}), url(r'^taggit_autosuggest/', include('ta

我有一个高流量django cms网站。在同一个站点上,还有一个附加的django应用程序,带有restful api。
我有以下URL.py

urlpatterns = [

    url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap',
        {'sitemaps': {'cmspages': CMSSitemap}}),
    url(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')),
    url(r'^select2/', include('django_select2.urls')),
    url(r'^api/', include('api.urls')),
]

urlpatterns += i18n_patterns(    
    url(r'^admin/', include(admin.site.urls)),
    url(r'^', include('cms.urls')),
)
问题是,如果api在应用程序级别为其URL返回404(例如对于
/api/post/15
),则
urls.py
定义中的最后一行截取404,并返回302,重定向到
/en/api/post/15
(假设英语是默认语言)


这种行为适用于所有CMS URI,但不适用于API,因为它只会增加流量。如何避免django cms url不从API截获404

这实际上可能是一个Django bug。django CMS不拦截404,如果在应用程序级别引发404,django的区域设置中间件将捕获404并执行重定向。我认为这是一个bug,因为它不应该拦截显式应用程序404,或者在中间件中,它应该使用请求中的解析器匹配来查看匹配的模式是否是i18n模式