Django Class Based View, установите значение request.session на некоторое значение, как только пользователь попадет на страницу - PullRequest
1 голос
/ 26 апреля 2019

У меня есть следующие потребности:

У меня есть данные о спортивных ставках на моем веб-сайте, и мне нужно отображать их в разных форматах в зависимости от местоположения пользователя. Я говорю о формате шансов, что-то вроде этого (это то же значение): десятичное число: 2,00 (для европейцев) американец: +100 (для американцев)

Я реализовал функцию, которая выглядит примерно так и работает хорошо:

def check_ip_and_set_initial_odds_format(request):
    country = get_country(get_client_ip2(request))['country_name']
    if country == 'United States' and 'odds_format' not in request.session:
        request.session['odds_format'] = 'American'
    return request.session

По сути, идея заключается в том, что если пользователь посещает мой веб-сайт в первый раз, odds_format устанавливается автоматически, и веб-сайт уже предоставляет правильный формат шансов.

Мой вопрос: могу ли я реализовать это так, чтобы независимо от того, с какой страницей пользователь взаимодействовал в первый раз, для odds_format было установлено правильное значение? На данный момент я реализовал это на домашней странице, но если кто-то попадет на мой сайт на другой странице, шансы не будут отображаться правильно.

Я знаю, что мог бы просто вызывать функцию во всех своих представлениях, но я думал о чем-то более умном, например, об изменении базового класса View? Если это правильный подход, как бы я достиг этого?

Спасибо!

...