python
  • django
  • memcached
  • hash-function
  • 2017-07-15 50 views 2 likes 
    2

    我正在使用使用緩存的我的網站。這是給下面的錯誤:控制/空格字符不允許在Django高速緩存後端使用MD5

    "Control/space characters not allowed (key="\xebw\x1b}\xae\xa3\xb8\x18\xc4\xb5\xce\x0c%\x13'\xed")". 
    

    ,我現在用的代碼如下:

    def hash_key(key, key_prefix, version): 
        new_key = '%s :%s :%s' % (key_prefix, version, key) 
        if len(new_key) > 250: 
         m = hashlib.md5() 
         m.update(new_key) 
         new_key = m.digest() 
    
        return new_key 
    CACHES = { 
        'default': { 
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 
         'LOCATION': '127.0.0.1.11211', 
         'KEY_FUNCTION': hash_key, 
        } 
    } 
    
    +0

    歡迎來到本網站!查看[tour](https://stackoverflow.com/tour)和[如何問問頁面](https://stackoverflow.com/help/how-to-ask),如果你還沒有,更多地以能夠吸引高質量答案的方式提問。 – cxw

    回答

    0

    嘗試使用的m.hexdigest()代替m.digest()。錯誤消息中的數據是16字節,即二進制散列數據的長度。看起來你需要32個字符的ASCII表示,這是hexdigest提供的。

    Docs, for Python 3

    +0

    @ITI不客氣!這裏的人們希望您傳達的是單擊最有效地回答您的問題的答案旁邊的複選標記,並單擊任何有用的答案旁邊的向上箭頭。這樣做會給其他人一個動力來回答你未來的問題。此外,當您接受答案(複選標記)時,您會得到聲望點,答案也是如此。 – cxw

    +0

    我已經做到了。由於我沒有15個聲望,所以不會公開計算。 – Yasha

    +0

    @ITI我忘記了:)。我相信你可以接受,即使你還沒有註冊 - https://stackoverflow.com/help/someone-answers。感謝您的意識!並非每個新用戶都是。 – cxw

    相關問題