Неправильное заполнение. Django в Google Chrome

#python-3.x #django #google-chrome

#python-3.x #django #google-chrome

Вопрос:

Пожалуйста, пропустите эту первую часть и найдите раздел обновления… Я задал вопрос вчера, но удалил его, потому что, похоже, я дал слишком мало информации и плохо объяснил вопрос. Но это отчасти решаемая проблема, но решения касаются разных проблем. Я только что реализовал идеи по этой конкретной проблеме, и я хотел бы поделиться ими, чтобы это могло помочь кому-то там.

Итак, проблема, с которой я столкнулся, заключается в следующем: мой сайт основан на приложении Django, когда я использую Google Chrome, он интерпретирует его как (насколько я понимаю) 32-разрядный, между тем он 64-разрядный (я не уверен, правильно ли я описываю проблему, но общая идея такова), и Google Chrome выходит из строя и выдает следующее сообщение:

Неправильное заполнение

Что я сделал, чтобы устранить проблему. Решение основано на:https://gist.github.com/perrygeo/ee7c65bb1541ff6ac770

Итак, я углубился в: /usr/local/lib/python3.8/base64.py Имя функции — b64decode, оно находится в строке 87. Это выглядит как:

 def b64decode(s, altchars=None, validate=False):
    """Decode the Base64 encoded bytes-like object or ASCII string s.

    Optional altchars must be a bytes-like object or ASCII string of length 2
    which specifies the alternative alphabet used instead of the ' ' and '/'
    characters.

    The result is returned as a bytes object.  A binascii.Error is raised if
    s is incorrectly padded.

    If validate is False (the default), characters that are neither in the
    normal base-64 alphabet nor the alternative alphabet are discarded prior
    to the padding check.  If validate is True, these non-alphabet characters
    in the input result in a binascii.Error.
    """
    s = _bytes_from_decode_data(s)
    if altchars is not None:
        altchars = _bytes_from_decode_data(altchars)
        assert len(altchars) == 2, repr(altchars)
        s = s.translate(bytes.maketrans(altchars, b' /'))
        if validate and not re.fullmatch(b'[A-Za-z0-9 /]*={0,2}', s):
        raise binascii.Error('Non-base64 digit found')
    return binascii.a2b_base64(s)
  

Чтобы устранить проблему, я изменил эту строку:
верните binascii.a2b_base64 (ы)
в это:
верните binascii.a2b_base64(s b’================================’)# исправлено

Может быть слишком много ‘=’, но они исчезнут в любом случае… Но эти знаки равенства позволяют Google Chrome правильно определять base64…

Эта ошибка возникает только с Google Chrome.

Обновить Приведенный выше подход почему-то на самом деле не работает… Он работает на одном компьютере с одним ключом и отключает другой компьютер с другим ключом среды. Таким образом, результат сам по себе не в порядке. Итак, в файле просмотра у меня есть следующий код:

 def index(request):
        now = datetime.datetime.now()
        num_visits=request.session.get('num_visits', 0)
        request.session['num_visits']=num_visits 1
        context = {
                'now':now,
                num_visits':num_visits,
        }
        return render(request, 'index.html', context=context)
  

Итак, как только я отключаю следующие части кода, предназначенные для подсчета количества сеансов пользователя, все становится нормальным, и у меня нет проблем:
num_visits=request.session.get(‘num_visits’, 0)
запрос.сессия[‘num_visits’]=num_visits 1
num_visits’:num_visits,

Итак, я предполагаю, что эти строки являются источником ошибки «неправильного заполнения»… Но что я сделал с ними не так, можно найти… Любая помощь была бы приятной…