【问题标题】:How to serialize localized date in Django如何在 Django 中序列化本地化日期
【发布时间】:2011-03-30 03:35:12
【问题描述】:

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

我已将 USE_I18N 和 USE_L10N 设置为 True 并安装了“django.middleware.locale.LocaleMiddleware”。在我的模板中,当我在上下文中传递的查询集上执行 value|date 时,它​​被正确格式化为浏览器语言环境。当我序列化我的模型的输出时,它不是。我已阅读所有文档,但不知道该怎么做。

基本上我有一个带有 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 可以访问正确的语言环境格式的日期时间以在我的页面中显示有任何想法?

非常感谢

丰富

【问题讨论】:

    标签: django internationalization


    【解决方案1】:

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

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

    更多信息可以在 django 文档中找到:Date format helper functions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-10
      • 2018-07-02
      • 2018-06-02
      • 2016-10-28
      • 2016-05-26
      • 1970-01-01
      • 2015-06-14
      • 2017-09-16
      相关资源
      最近更新 更多