Я создаю приложение, используя чужой API, позволяющий пользователю просматривать контент со своего сайта.Пользователь может войти в мой проект со своими учетными данными с этого другого сайта, чтобы "добавить в избранное" контент со своего сайта.
Когда они входят в систему, я получаю для них user_token.Чтобы не создавать для них пользовательский файл, я просто сохраняю этот токен как переменную сеанса:
# Set session
request.session.set_expiry(60 * 60)
# Save token in session
request.session['user_token'] = unicode(auth.Message)
Я также использую кеширование файлов для контента с сайта:
CACHE_BACKEND = 'file: ///..../cache/'
И использование команды @cache_page перед определенными представлениями для кэширования данных:
@cache_page(CACHE_TIME)
def listings_by_cat_page(request, category_id):
# view stuff here
Проблема, когда я'Когда пользователь просматривает домашний экран (который кэшируется), нажимает кнопку «Войти», входит в систему, а затем возвращается к домашнему экрану, кнопка «Вход / Выход из системы» не знает, как переключиться.Я предполагаю, что это потому, что, поскольку это кэшированная страница, она не видит переменную сеанса user_token.
{% if not request.session.user_token %}
<a href="/login{% comment %}?next={{ request.path }}{% endcomment %}" class="login">Login</a>
{% else %}
<a href="/logout/" class="login">Logout</a>
{% endif %}
В идеале я хотел бы кэшировать содержимое, но чтобы страница распознала изменение впеременные request.session.
Есть идеи?