Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django';s显示的日期时间不';t根据用户';s本地时区_Python_Django_Django Models - Fatal编程技术网

Python Django';s显示的日期时间不';t根据用户';s本地时区

Python Django';s显示的日期时间不';t根据用户';s本地时区,python,django,django-models,Python,Django,Django Models,models.py 来自django.db导入模型的 #在这里创建您的模型。 课程主题(models.Model): “”“用户正在学习的主题。”“” text=models.CharField(最大长度=200) date\u added=models.DateTimeField(auto\u now\u add=True) 定义(自我): “”“返回模型的字符串表示形式。”“” 返回self.text 类条目(models.Model): “”“有关某个主题的特定知识。”“” topic=m

models.py

来自django.db导入模型的

#在这里创建您的模型。
课程主题(models.Model):
“”“用户正在学习的主题。”“”
text=models.CharField(最大长度=200)
date\u added=models.DateTimeField(auto\u now\u add=True)
定义(自我):
“”“返回模型的字符串表示形式。”“”
返回self.text
类条目(models.Model):
“”“有关某个主题的特定知识。”“”
topic=models.ForeignKey(topic,on_delete=models.CASCADE)
text=models.TextField()
date\u added=models.DateTimeField(auto\u now\u add=True)
类元:
详细名称复数='entries'
定义(自我):
“”“返回模型的字符串表示形式。”“”
如果len(self.text)>50:
返回f“{self.text[:50]}…”
其他:
返回self.text
模板值
{{entry.date|date:'md,yg:i'}}

在模板中,如果我显示date_added变量,则时间似乎比我的计算机时间晚了8小时。我试图更改设置中的时区,但遇到
值错误:时区设置不正确

编辑:
USE_TZ
设置为true

在下面的模板代码中,
localtime
on不影响日期,奇怪的是只显示服务器时间

            {% load tz %}

            {% timezone "Europe/Paris" %}
                <p>Paris time: {{ entry.date_added|date:'M d, Y g:i' }}</p>
            {% endtimezone %}

            {% timezone None %}
                <p>Server time: {{ entry.date_added|date:'M d, Y g:i' }}</p>
            {% endtimezone %}

            {% localtime on %}
                <p>Local Time: {{ entry.date_added|localtime }}</p>
            {% endlocaltime %}
{%load tz%}
{%时区“欧洲/巴黎”%}
巴黎时间:{entry.date|date:'md,yg:i'}

{%endtimezone%} {%时区无%} 服务器时间:{{entry.date_added}日期:'md,yg:i'}

{%endtimezone%} {%localtime on%} 本地时间:{entry.date_added | localtime}

{%endlocaltime%}

将“设置”中的时区变量设置为与上表中3个字母的时区代码关联的字符串是有效的

e、 g
时区='国家/城市名称'



编辑:将服务器时间设置为UTC,然后向用户提供使用Javascript转换的本地时间,这可能是最好的方法。

在您的settings.py文件中,您的默认时区设置为

TIME_ZONE = 'UTC'
您将希望保持原样,这样您就不会遇到DST问题。从数据库中获取对象后,将由您转换为本地时区。为了获取本地时区,您可以直接询问用户,并使用类似的方式将时区保存到他们的配置文件中

请参见中的示例

如果您不关心为所有用户显示正确的时区,而只是想为自己快速更改时区,则可以在模板中设置时区

{% load tz %}

{% timezone "Europe/Paris" %}
    Paris time: {{ value }}
{% endtimezone %}

{% timezone None %}
    Server time: {{ value }}
{% endtimezone %}

在settings.py文件中,您的时区显示了什么?由于夏令时问题,您不会希望以这种方式处理它。更多信息,请参见。相反,我应该在一个模板中转换它,例如
{value | timezone:“Country/City_Name”}
?如果它只适合您,那么就可以了。如果您计划为每个用户更新它,您将需要更健壮的东西。使用本地时间(
{%localtime on%}
)仍然会奇怪地显示服务器时间。。。