#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
Для получения дополнительной помощи: Посетите Здесь