Тема: HTTP request to db
Привіт всім!
Python/django
Мені треба зберегти всі-всі запити до django в базу даних. Все ок.
Єдина проблема виникає коли є POST запит, і в запиті передавались файли, напр. картинка.
В django в
request.body
якраз передаєтся тіло запиту. Тільки, наскільки я розумію, файли передаються http в байтах?
Як мені записати це в базу даних? + Треба врахувати, що в тілі може бути не тільки файл, а і решта "нормального" тексту. (не знаю, чи правильно я зараз говорю)
Якщо просто в django.db.models.TextField запихати request.body, то виходить помилка:
You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.
Оце нагуглив рішення:
base64.encodestring(body) # так кодуєм і записуєм базу
base64.decodestring(body) # а так розкодовуєм
В базу зберігається (закодовано). А от треба тепер якось це в нормальному вигляді показати людям на сайті. Тобто з допомогою base64.decodestring(body). І отут проблема:
якщо зробити
print base64.decodestring(body)
то виведе в термінал багато кракозябрів(це напевно картинка і трохи норм. тексту - всі решта поля). А от якщо через django шаблон відображати - то взагалі нічого не відбувається. Просто пусте місце.
Тож допоможіть:
1. Як відобразати base64.decodestring(body) в шаблоні на сайті.
2. Якщо з першим пунктом нереально взагалі нічого, можливо є інший спосіб записати в базу значення?
Дякую!