質問: 現在の開発環境はPython2.7.8とdjango1.3.1です。 XSS脆弱性対策のため、下記サイトから「django-secure 1.0.1.tar.gz」をダウンロードしました。 これをビルドしてからインストールしたところ、 required.txtにdjangoのバージョン記載があるために、 django1.11.1が同時にインストールされてしまいました。 現在、djangoのsite-package以下に二つのdjangoがある状態なのですが、 これは元々入っているdjangoの動作に影響を与えてしまうのでしょうか? (この状態で半日ほど使用しましたが、動作については問題ないように見えます。) もし問題があるようであれば、新しくインストールされたdjangoは削除しようと思っています。 どなたか知っている方がいらっしゃればご教授いただければ幸いです。よろしくお願い致します。
回答: を見ると、 ``` install_requires=["Django>=1.4.2"], ``` と書いてあるので、Django-1.4.2以上が必要ですね。 > > 現在、djangoのsite-package以下に二つのdjangoがある状態なのですが、 > > これは元々入っているdjangoの動作に影響を与えてしまうのでしょうか? > > > はい。影響します。 "二つのdjangoがある状態" というのがどういう状態なのか(複数の可能性がありえるので)正確には分かりませんが、少なくとも、django-secureはDjango-1.4.2以上でなければ動作しないということが言えます。 > > 現在の開発環境はPython2.7.8とdjango1.3.1です。 > > > ということは、django-secure-1.0.1を使うためには、django-1.3.1ではだめで、少なくともdjango-1.4.2に上げる必要があります。 Djangoに限らず、メジャーバージョンを上げると、古い使い方を一部できなくなります。これを互換性のない変更(Incompatible Changes)と言いますが、Djangoのドキュメントにもそのあたりが書いてあります。 Djangoの場合、1.xのxの部分がメジャーバージョンです。x部分の数値が上がると、それまでのバージョンとの非互換機能があります。1.3から1.4への非互換機能、1.4から1.5への非互換機能・・・というようにメジャーバージョンを上げるごとに互換性のない機能変更が積み重なっていきます。 1.3 から 1.11 に上げると、ものすごくたくさんの非互換機能が積み重なるので、たいていの場合、古いバージョン向けに作ったプログラムはそのままでは新しいバージョンでは動作しません。 > > もし問題があるようであれば、新しくインストールされたdjangoは削除しようと思っています。 > > > django-secure-1.0.1を使うためには、django-1.3.1ではだめで、少なくともdjango-1.4.2に上げる必要があります。 別の視点から見ると、Django-1.3や1.4はすでにセキュリティー上問題のあるバグなどの修正が終わっていて、危険なバグがそのままになっています。セキュリティーを気にするのであれば、現在もメンテナンスされているDjango-1.8, 1.0, 1.11 のどれか(新しい方がオススメ)を使うべきでしょう。