Django 2.2 时间和日期本地化细节



我正在学习Django的国际化和本地化方法。为此,我遵循本教程:

http://www.marinamele.com/taskbuster-django-tutorial/internationalization-localization-languages-time-zones

我遇到的问题是教程建议的测试不起作用。此外,我看不出它是如何工作的。

这是相关的模板位

<div class="row">
<div class="col-md-4">
<h2 id="local-date">{{today}}</h2>
<p>This is the time using your local information. </p>
<p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
</div>
<div class="col-md-4">
<h2 id="non-local-date">{{today|unlocalize}}</h2>
<p>This is the default time format. </p>
<p><a class="btn btn-default" href="#" role="button">View details &raquo;</a></p>
</div> 

视图如下

from django.shortcuts import render
import datetime
def home(request):
today = datetime.date.today()
return render(request, "taskbuster/index.html", {'today': today})

测试如下

def test_localization(self):
today = date.today()
for lang in ['en', 'ca']:
activate(lang)
self.browser.get(self.get_full_url("home"))
local_date = self.browser.find_element_by_id("local-date")
non_local_date = self.browser.find_element_by_id("non-local-date")
self.assertEqual(formats.date_format(today, use_l10n=True),
local_date.text)
self.assertEqual(today.strftime('%Y-%m-%d'), non_local_date.text)

我看到的失败是

self.assertEqual(today.strftime('%B %d, %Y'), non_local_date.text)
AssertionError: 'June 22, 2019' != 'jun. 22, 2019'
- June 22, 2019
? ^  ^
+ jun. 22, 2019

? ^ ^

如您所见,加泰罗尼亚语版本与默认的非本地化版本不同。我在这里错过了一些明显的东西吗?这些位在 Django 中的工作方式是否发生了变化,从而导致了这种失败?本教程的作者声称此测试应在本教程的这一点上通过。

附言如果添加其他更有趣的语言,其中有更合乎逻辑的日>月>年格式来显示日期,他也可以观察到这种失败。考虑ru的情况:

AssertionError: '22 June, 2019' != 'Июнь 22, 2019'
- 22 June, 2019
+ Июнь 22, 2019

我也一直在通过Marina Mele Django教程工作。我发现它有很多问题。对于日期本地化部分,我烧了几个小时直到我弄清楚索引.html在本教程中需要具有以下两个 load语句才能处理日期本地化和翻译,如下所示:

{% extends "base.html" %}
{% block head_title %}TaskBuster Django Tutorial{% endblock %}
{% load i18n %}
{% load l10n %}
{% block content %}

如果没有这个,你会收到一个"无效的过滤器"错误。 我不确定这是否会解决您遇到的问题,但这是一个示例来说明,尽管本教程总体上非常好,但您尝试执行所有内容的问题可能是由于教程中的错误或遗漏(在某些情况下可能是因为您必须作为项目的一部分安装的较新版本的软件包不兼容)....至少,这在调试中提供了有用的(虽然令人沮丧的)练习!

最新更新