本文へ移動

Python、Webアプリや製品・サービス開発についてhirokikyが書きます。

django-cms で言語別のページを用意しない方法

hirokikyはてなブックマーク

django-cms で言語別のページを用意しない方法。

django-cms のチュートリアル (3. Introductory Tutorial — django cms 2.3 documentation) どおりに導入すると、例えば /tempura というURLに

と言語別のURLが用意されてしまう。
(/tempura は英語で書いているよう設定している)

サイトが単一の言語しか想定してない場合、複数URLを用意してやる必要は無いので消したい。

環境

  • UbuntuServer==11.04
  • Python==2.7.1
  • Django==1.4
  • PIL==1.1.7
  • South==0.7.5
  • django-classy-tags==0.3.4.1
  • django-cms==2.3
  • django-mptt==0.5.2
  • django-sekizai==0.6.1
  • html5lib==0.95

解法

上記URLのチュートリアルでは、最初から複数言語に対応できるように設定されているので、それを消してやれば良い。
設定ファイル (settings.py) の MIDDLEWARE_CLASSES から1行消してやれば良い。

MIDDLEWARE_CLASSES = (
    ...
    'cms.middleware.multilingual.MultilingualURLMiddleware',
    ...
)

これでさっきの例だと

のみ有効なURLとなる。

参考: http://django-cms.readthedocs.org/en/latest/advanced/i18n.html#multilingual-url-middleware