MemcachedKeyCharacterError: Control characters not allowed.
djangoのキャッシュ機能でキーにオブジェクトなどを指定した場合におこる可能性があるようです。
models.py
from django.db import models
class TestModel(models.Model):
test = models.CharField(verbose_name=u'テスト')
views.py
from django.core.cache import cache
def test_view(request):
obj = TestModel.objects.get(pk=1)
objs = cache.get(obj, None)
上記にてビューを呼ぶと'cache.get(obj, None)'の箇所で、'MemcachedKeyCharacterError: Control characters not allowed'エラーが起こる可能性があります。
models.py
from django.db import models
class TestModel(models.Model):
test = models.CharField(verbose_name=u'テスト')
def __unicode__(self):
return u"%s:%s" % (self.__class__.__name__, self.id)
上記のようにオブジェクトを出力などをしたときに呼ばれるメソッドで、文字列定義すればエラーを回避できます。
Cache key contains characters that will cause errors if used with memcached
views.py
from django.core.cache import cache
def test_view(request):
obj = TestModel.objects.get(pk=1)
objs = cache.get("aaaa bbbb", None)
上記のようにスペースなどが含むキーもNGです。