使Djangocms url解析器不那么贪婪

2024-05-19 11:03:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个高流量django cms网站。在同一个网站上,还有一个附加的django应用程序,带有restful api。
我有追随者网址.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(假设英语是默认语言)。你知道吗

这种行为适用于所有cmsri,但不适用于API,因为它只会增加通信量。我怎样才能避免djangocmsurl不从API截获404。你知道吗


Tags: djangopyapi应用程序urlcmsinclude网站
1条回答
网友
1楼 · 发布于 2024-05-19 11:03:30

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

相关问题 更多 >

    热门问题