Отобразить изображение профиля в панели навигации с помощью flask - PullRequest
0 голосов
/ 13 января 2020

Я сохранил изображение профиля в mysql с типом данных blob и теперь хочу отобразить его на панели навигации. Я запрашиваю его с помощью sql и конвертирую байты в изображение png.

Моя идея состояла в том, чтобы передать изображение в сеанс flask (потому что я показываю навигационную панель в разных типах (вошел в систему и вышел из системы) и передал эту проверку с помощью session["logged_in] = True or False. Поэтому я отправляю таким образом к сеансу, а затем попробуйте показать его в панели навигации.

Следующий navbar.html

 {% if  session["logged_in"] == True %}
        <li class="nav-item active">
          <a class="nav-link" href="/dashboard">Kontrol Paneli</a>
        </li>
        <li class="nav-item active">
          <a class="nav-link" href="/logout">Cikis yap</a>
        </li>
        <li class="nav-item active">
          <a class="navbar-brand" href="#">
            <img src="{{session.photo}}" />
          </a>        
        </li>
        {% else %}
        <li class="nav-item active">
          <a class="nav-link" href="/register">Kayit olun</a>
        </li>
        <li class="nav-item active">
            <a class="nav-link" href="/login">Login</a>
        </li>
        {% endif %}

Python фрагмент:

    data = cursor.fetchone() 
    session["logged_in"] = True
    session["username"] = username

    image = Image.open(io.BytesIO(data["photo"]))
    session["photo"] = image

Таким образом я получил сообщение об ошибке:

TypeError: Object of type PngImageFile is not JSON serializable

Я пробовал также другие решения с base64 coding et c., Но изображение всегда было повреждено, и тег изображения в html в браузере был всегда пусто.

...