MemcachedKeyCharacterError: Control characters not allowed. Il semble que cela puisse se produire lorsqu'un objet, etc. est spécifié comme clé avec la fonction de cache de django.
models.py
from django.db import models
class TestModel(models.Model):
test = models.CharField(verbose_name=u'tester')
views.py
from django.core.cache import cache
def test_view(request):
obj = TestModel.objects.get(pk=1)
objs = cache.get(obj, None)
Si vous appelez la vue ci-dessus, vous pouvez obtenir une erreur "MemcachedKeyCharacterError: caractères de contrôle non autorisés" à "cache.get (obj, None) ".
models.py
from django.db import models
class TestModel(models.Model):
test = models.CharField(verbose_name=u'tester')
def __unicode__(self):
return u"%s:%s" % (self.__class__.__name__, self.id)
Vous pouvez éviter l'erreur en définissant une chaîne de caractères avec la méthode appelée lorsque l'objet est sorti comme décrit ci-dessus.
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)
Comme mentionné ci-dessus, les clés comprenant des espaces sont également NG.
Recommended Posts