Django 1.10& Django-cms 3.4.4 - 某些浏览器的NoReverseMatch

时间:2017-08-07 20:14:29

标签: python django django-cms

我偶然发现了一个非常奇怪的问题。开发环境是Django 1.10& django-cms 3.4.4。当我尝试在Chrome和Linux中加载localhost时Firefox一切正常,但是如果我尝试在Safari中打开它,它会在 NoReverseMatch at 时失败并且随机网址失败。我也试过

curl http://localhost:8000/ 

它工作正常。 也尝试在Windows和不同的浏览器上,它失败了一些具有相同错误的浏览器。 有人知道可能是什么问题吗? 谢谢!

P.S。

Reverse for 'model' with arguments '(u'bmw',)' and keyword arguments '{}' not found. 0 pattern(s) tried: []

它似乎根本没有加载任何网址。 尝试了0个模式表示我猜没有加载任何内容?

1 个答案:

答案 0 :(得分:1)

我想我找到了它。长话短说

默认cms配置为使用英语作为主要语言,但我希望我的主要语言是保加利亚语。我将CMS配置为支持这两种语言,并且我将保加利亚语设为默认语言并禁用英语。然后我删除了i18n_patterns()中的urls.py包装器,以摆脱/en/ /bg/等前缀。到现在为止还挺好。管理网站效果很好。只有一种语言 - 保加利亚语,附有页面和自定义应用程序。当我在Safari上加载错误网址的前端只是为了查看所有支持的网址时,我看不到任何附加的应用程序和网址。如果我对Chrome也这样做 - 它会显示所有附加应用程序的网址。事实证明,Chrome加载了保加利亚语页面配置和所有已配置的应用程序,但是Safari会加载已禁用的英语页面,并且没有附加的应用程序。

我的第一个猜测是Accept-Language标头。 Safari使用Accept-Language: en,但其他浏览器发送bg。我试图篡改数据,但什么都没发生。然后我注意到django_language正在使用LocaleMiddleware cookie来实际确定语言。当我禁用中间件时,一切都像魅力一样。

谢谢!