您的 webapp 的用户可能处于不同的时区,因此需要转换为适当的时区。您可以创建一个中间件并使用激活函数来设置适当的时区。您可以通过在登录页面中对Free IP Geolocation API进行 ajax api 调用来获取客户端时区,并且时区值可以保存在 cookie 变量中,以后可以在中间件中访问该变量。
登陆页面.html
<script>
$.ajax({
url: 'https://freegeoip.app/json/',
dataType: 'json',
success: function (data) {
document.cookie = 'timezone=' + data['time_zone'] + '; path=/';
}
});
</script>
中间件.py
import pytz
import requests
from django.utils import timezone
class TimezoneMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
tzname = request.COOKIES.get('timezone')
if tzname:
timezone.activate(pytz.timezone(tzname))
else:
timezone.deactivate()
return self.get_response(request)
设置.py
MIDDLEWARE = [ ........
'projectname.middleware.TimezoneMiddleware',
]