Как отобразить время создания поста в соответствии со страной пользователя, такой как Twitter, в Django?

#python #django

Вопрос:

Я попробовал django-tz-detect, но он не работает в производстве. Я также попробовал модуль django-easy-часовые пояса, который также не работает для меня.

Я просто хочу преобразовать часовой пояс UTC в часовой пояс страны пользователей, такой как Twitter или другие социальные сети в Django.

Комментарии:

1. Если вы пытаетесь изменить весь часовой пояс проекта, вы можете сделать это в настройках. py по: TIME_ZONE = ‘Азия/Калькутта’ или в любом часовом поясе, который вы хотите

2. Нет, я хочу, чтобы Твиттер был похож на время, поэтому мне нужно определить часовой пояс пользователя. Как это сделать в джанго

Ответ №1:

Один из способов сделать это-использовать API Freegeoip. По умолчанию он предоставляет нам 10 000 запросов в час.

Шаг 1: Получить часовой пояс пользователя:

 import requests

freegeoip_response = requests.get('http://freegeoip.net/json')
freegeoip_response_json = freegeoip_response.json()
user_time_zone = freegeoip_response_json['time_zone']
 

Setp 2: Активация Часового пояса

 import pytz
from django.utils import timezone

....
timezone.activate(pytz.timezone(user_time_zone))
 

Вы также можете добавить промежуточное программное обеспечение, подобное этому:

 class UserTimezoneMiddleware(object):
    """ Middleware to check user timezone. """
    def process_request(self, request):
        user_time_zone = request.session.get('user_time_zone', None)
        try:
            if user_time_zone is None:
                freegeoip_response = requests.get('http://freegeoip.net/json/{0}'.format(ip))
                freegeoip_response_json = freegeoip_response.json()
                user_time_zone = freegeoip_response_json['time_zone']
                if user_time_zone:
                    request.session['user_time_zone'] = user_time_zone
            timezone.activate(pytz.timezone(user_time_zone))
        except:
            pass
        return None
 

Для получения дополнительной помощи: Посетите Здесь