1

我似乎无法在 django 中使用时区。我在这里读过这个,但是当我尝试应用它时它不起作用。

我的模型

class Model(models.Model)
    name = models.CharField(max_length=30)
    date = models.DateTimeField()

我的看法是:

from django.utils.timezone import timezone
def view(request):
    today = datetime.now().replace(tzinfo=utc) 
    model = Model.objects.filter(date__gte=today, date__lte=today + timedelta(days=2)
    return render_to_response('template.html', {'models':model}, context_instance=RequestContext(request)

在我的 template.html

{%for model in models%}
    {{model.date.hour}}:{{model.date.hour}} - {{model.name}}
{%endfor%}

我的设置文件

TIME_ZONE = 'Europe/Athens'
USE_TZ = True
USE_L10N = True

因此,当我读到 USE_TZ 是否为真时,日期时间会以 UTC 格式保存在数据库中,然后 django 在将它们呈现在表单中时以本地时间(根据 TIME_ZONE 变量)呈现它们。但是我的模板会呈现它们保存在数据库中的日期(意味着比当地时间晚了两个小时,例如我想要 18:30,它保存了 16:30,它显示 16:30)。我试过了

{%load tz%}
{%for model in models%}
    {{model.date.hour|localtime}}:{{model.date.minute|localtime}} - {{model.name}}
{%endfor%} 

没有什么。更准确地说,它根本没有显示任何日期,它是空白的。我试过了

{%load tz%}
{%for model in models%}
    {%localtime on %}
        {{model.date.hour}}:{{model.date.time}} - {{model.name}}
    {%endlocaltime%}
{%endfor%} 

但时间保持不变,没有任何修改。

问题是在我的模板中,我以类似的方式执行此操作

{{model.date}} - {{model.name}}

它以正确的时区显示日期(例如 14:30 变为 16:30),但不是 24 小时格式(我保存的格式)。有人可以帮我解决时区和django一劳永逸的问题吗

4

0 回答 0