不要在Django CMS站点的URL中显示默认语言的语言代码

时间:2014-07-29 10:20:33

标签: django-cms

当我设置一个多语言的DjangoCMS支持的网站时,默认语言代码将附加到URL:

http://mypage.com/ -> http://mypage.com/en

我不希望这是默认语言的情况(例如' en')而是我想要的是当内部没有语言标识符时选择的默认语言网址:

http://mypage.com -> Choose English
http://mypage.com/fr -> Choose French
http://mypage.com/it -> Choose Italian

如何做到这一点?

版本:

  • Django CMS 3.0.3
  • Django 1.6.5
  • Python 2.7

2 个答案:

答案 0 :(得分:1)

我为正在生产中使用它的项目写了this,他们使用django-cms 2.4.3但我不明白为什么它不适用于3.0,你需要做的只是在你的一个应用程序中创建middleware.py文件,比如说core,然后将django的语言环境中间件替换为这个文件的路径,因为它是它的子类。

答案 1 :(得分:0)

基于Django CMS版本3.4.5和Django版本1.8.18的网站,我遇到了类似的情况。乍一看,这似乎是Django CMS关注的问题,但后来我意识到这与核心Django更为相关,后者已被本项目的最新版本本地解决。

工作解决方案

我申请的直接解决方案涉及这些变化:

  1. 升级到Django版本1.11.8(任何版本> = 1.10都应该有效)。像pip install Django==1.11.8 --upgrade这样的shell命令可以实现这一点。
  2. 编辑urls.py文件以进行更改,如下所示:
  3. urls.py档案的原始内容:

     urlpatterns += i18n_patterns(
         url(r'^admin/', include(admin.site.urls)),  # NOQA
         url(r'^', include('cms.urls')),
     )
    

    urls.py档案的新内容:

     urlpatterns += i18n_patterns(
         url(r'^admin/', include(admin.site.urls)),  # NOQA
         url(r'^', include('cms.urls')),
         prefix_default_language=False
     )
    
    1. 应用Django迁移,它是新版本Django
    2. 的一部分
    3. 再次运行Django项目并直观地验证新的所需行为
    4. 我应该提一下,在#django-cms IRC频道上有昵称FalseID的人给了我建议找到这个解决方案,以及其他相关提示。

      其他参考资料