Djangoプロダクションサーバーの静的ファイルを圧縮すると、突然この問題が発生しました。Ubuntu16.04、Python 3.x、Django = 1.11。展開にansible-playbookを使用しています。
エラーは次のとおりです。
CommandError: An error occurred during rendering /chalktalk/app/chalktalk-react-40/chalktalk-react-40/chalktalk/apps/exams/templates/exams/section-edit.html: Invalid input of type: 'CacheKey'. Convert to a byte, string or number first.
静的ファイルの1つでは問題ではないようですが、一般的な問題です。実行するたびに、異なるファイルを取得します。
私はグーグルで任意の手がかりを探していましたが、同じエラーで何も表示されません。
これは、基盤となるredis
ライブラリの問題のようです。 2017年8月17日から、redis
バージョンを2.10.6
に固定してみてください。11月15日にリリースされた新しいバージョン3には、この互換性のない変更があります。
pip install redis==2.10.6
# and/or
echo redis==2.10.6 >> requirements.txt
依存関係としてredisを必要とする可能性のある使用中のパッケージ、または自分で使用しているかどうかはわかりません。どちらの場合も同じプロセスです。
私もこの問題を抱え始めましたが、redis
libが必要なDjango-redis
パッケージを使用しました。ただし、そのパッケージは実際にはmaximumバージョンを制限しないため、メジャーバージョンのバンプを超えて幸いにもアップグレードされます。 APIの変更が予想される場所!
Django-redis のマスターの正確なコード:
install_requires = [
"redis>=2.10.0",
]
しかし、それは本当にこれでなければなりません
install_requires = [
"redis>=2.10.0, <3",
]
編集: これに関するDjango-redis(#342)のバグレポート が見つかりましたが、これはSO質問がGoogleで最初に出てきましたそれ。
バージョン3の下にredis-pyをインストールしてみてください