加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Django在模板中获取用户时区

发布时间:2020-12-20 13:42:23 所属栏目:Python 来源:网络整理
导读:我在UTC中保存日期.我不想将该日期更改为自动用户时区. 我的设置 USE_TZ = True 我的模板 {% for sale in sales %} date : {{sale.date}}{% endfor %} 我试过django-tz-detect https://github.com/adamcharnock/django-tz-detect 但我无法正确实现. 请提出一
我在UTC中保存日期.我不想将该日期更改为自动用户时区.

我的设置

USE_TZ = True

我的模板

{% for sale in sales %}
    date : {{sale.date}}
{% endfor %}

我试过django-tz-detect

https://github.com/adamcharnock/django-tz-detect

但我无法正确实现.

请提出一个解决此问题的好方法.

解决方法

我从 here获得了解决方案

我创建了一个视图功能

@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 %}

我不知道这是正确的方法.但这个解决方案适合我.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读