如何在Django中序列化本地化日期

时间:2011-03-30 03:35:12

标签: django internationalization

我正在构建一个需要i18​​n支持的网络应用程序。它在模板中以及通过Ajax调用来显示日期和时间。

我将USE_I18N和USE_L10N设置为True并安装了'django.middleware.locale.LocaleMiddleware'。在我的模板中,当我对在上下文中传递的查询集进行值|日期时,它被正确地格式化为浏览器区域设置。当我序列化我的模型的输出时,它不是。我已阅读所有文档但无法看到如何做到这一点。

基本上我有一个带有DateTimeField的模型。我试图通过Ajax以本地化格式将其返回到Javascript。我使用序列化返回它但日期时间没有格式化为语言环境。

见下文:

型号:

class Messages(models.Model):
    message             = models.CharField(max_length=500)
    date_created        = models.DateTimeField(auto_now_add=True)
    thread_id           = models.IntegerField(db_index=True)

网络服务视图:

def get_message_thread(request):
    message_thread = request.POST['message_thread']
    message_threads = Messages.objects.filter(thread_id=message_thread)
    from django.core.serializers import serialize    
    json = serialize("json", message_threads, fields=('id', 'message' 'date_created'))
    return HttpResponse(json, 'content-type:javascript/json')

有没有人对我需要做些什么来制作一个正确的语言环境格式的日期时间,我的javascript可以在我的页面中显示?

非常感谢

1 个答案:

答案 0 :(得分:0)

您需要重新考虑序列化,但基本思路如下:

from django.utils import formats
date_format = formats.get_format('DATE_FORMAT')

serialized_date = date.strftime(date_format)

更多信息可以在django-documentation:Date format helper functions

找到