0
0

More than 5 years have passed since last update.

djangoでmemcachedに関わるエラー

Last updated at Posted at 2013-09-25

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です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0