如何将django的创建时间转换为当前用户时间?

guykilcj  于 2023-01-10  发布在  Go
关注(0)|答案(2)|浏览(143)

我正在使用获取用户对象

user = User.objects.all()
context = {'user':user}

将其传递到上下文,然后在模板中使用

{% for i in user %}

<h1>{{i.first_name}}<h1>

<h1>{{i.date_joined}}</h1>

{% endfor %}

现在我正在获取服务器时间,但我想得到的时间根据当前用户的国家时间?这怎么可能?

rqdpfwrv

rqdpfwrv1#

正确的方法是将每个用户的时区存储在User模型或其他易于访问的模型中,然后可以编写一个用户的模型方法,获取服务器时间并将其转换为用户的本地时间,然后在模板中调用该方法并根据需要设置其格式:

{% for user in users %}

    <h1>{{ user.date_joined_local|date:"d/m/Y H:i" }}</h1>

{% endfor %}
u3r8eeie

u3r8eeie2#

我已经找到了一种方法来获取用户的本地时间,并在模板中呈现它,而无需修改User模型中的任何内容。
Javascript:在登录页cookie中存储时区

const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
document.cookie = "timeZone="+timeZone;

在www.example.com中views.py将其传递给会话以维护cookie服务器端(在模板视图或索引视图中)

request.session['timeZone'] = request.COOKIES.get('timeZone')

在模板views.py

context['timeZone'] = request.session['timeZone']

在模板. html中

{% load tz ‰}

<h1>{user.date_joined|timezone:timeZone}</h1>

相关问题