在同一站点上,还有一个额外的django应用程序,它具有restful api。
我已经关注了urls.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')),
)
问题是,如果应用程序接口在应用程序级别为其urls之一返回404 (例如,对于/api/post/15
),urls.py
定义中的最后一行将拦截404,并返回302,从而重定向到/en/api/post/15
(假设英语是默认语言)。
这种行为适用于所有CMS URI,但不适用于API,因为它只会增加流量。如何避免django-cms url不能拦截来自API的404。
发布于 2017-03-17 16:23:48
这可能实际上是Django的bug。django CMS不拦截404,如果在应用程序级别引发了404,那么django的本地中间件将捕获它并进行重定向。我认为这是一个错误,因为它不应该拦截显式的应用程序404s,或者在中间件中,它应该使用请求中的解析器匹配来查看匹配的模式是否是i18n模式。
https://stackoverflow.com/questions/42828821
复制