Django получить часовой пояс пользователя в шаблоне
Я сохраняю дату в UTC. Я не хочу менять эту дату на автоматический часовой пояс пользователя.
мои настройки
USE_TZ = True
мой шаблон
{% for sale in sales %}
date : {{sale.date}}
{% endfor %}
Я попробовал Django-TZ-Detect
https://github.com/adamcharnock/django-tz-detect
но я не могу реализовать это правильно.
Пожалуйста, предложите хороший способ решить эту проблему.
1 ответ
Я получил решение отсюда
Я создал функцию просмотра
@login_required
@ajax_required
@require_GET
def set_user_timezone(request):
timezone = request.GET.get('timezone')
request.session["set_user_timezone"] = timezone
response_data = {}
response_data['status'] = 'true'
response_data['message'] = 'user timezone set successfully.'
return HttpResponse(json.dumps(response_data), mimetype='application/javascript')
контекст
if "set_user_timezone" in request.session:
user_session_ok = True
user_time_zone = request.session['set_user_timezone']
else:
user_session_ok = False
user_time_zone = "Asia/Kolkata"
в моем базовом шаблоне
{% if not user_session_ok %}
<script type="text/javascript" src="{% static 'js/jstz.js' %}"></script>
<script>
$(document).ready(function(){
var timezone = jstz.determine();
var timezone_name = timezone.name();
$.ajax({
url : '/set-user-timezone/',
action : "GET",
data : {
timezone : timezone_name
},
success : function(data){
},
error : function(data){
}
})
});
</script>
{% endif %}
мой шаблон продаж
{% for sale in sales %}
{% load tz %}
date : {{ sale.sale_date|timezone:user_time_zone }}
{% endfor %}
Я не знаю, это правильный метод. но это решение работает для меня.