Django并在正确的时区中查看模板中的日期

时间:2013-11-29 09:28:28

标签: django datetime localization timezone django-timezone

我似乎无法在django中使用时区。我在这里阅读this,但是当我尝试应用它时,它将无效。

我的模特

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),而不是24h格式(我保存了它)。 有人能帮助我一点时区和django一劳永逸地清除它

0 个答案:

没有答案