如何防止 Django 本地化模板中的 ID?

发布于 2024-11-04 13:59:51 字数 499 浏览 0 评论 0原文

我最近升级到 Django 1.2.5,现在我遇到了本地化问题,特别是数字格式问题。例如,在某些模板中,我打印以下示例:

data-id="{{ form.instance.id }}"

在情况 >= 1000 的情况下,用于评估为:

data-id="1235"

但现在它实际上导致(我的本地化是 pt-BR,我们的小数分隔符是点):

data-id="1.235"

这当然是后来通过ID查询数据库没有找到。使用 |safe 过滤器可以解决问题,但我不愿意找到所有模板中的所有 ID 并保护它们。

通常,我只会本地化浮点数,而不是整数。我不想禁用 L10N,因为所有其他格式都工作正常。 有没有办法在 Django 本地化中做出这种区分? 接受任何其他解决方案。

I have recently upgraded to Django 1.2.5, and now I am having problems with localization, specifically number formatting. For example, in some templates I print the following samples:

data-id="{{ form.instance.id }}"

Which in cases >= 1000, used to evaluate to:

data-id="1235"

But now it actually results in (my localization is pt-BR, our decimal separator is dot):

data-id="1.235"

Which of course is not found when I afterwards query the database by ID. Using a |safe filter solves the problem, but I'm not willing to find all IDs in all templates and safe them.

Usually, I'll only localize the floating points, not the integers. I don't want to disable L10N, because of all the other formatting that is working fine. Is there a way to make this distinction in Django localization? Any other solution is accepted.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

同尘 2024-11-11 13:59:51
data-id="{{ form.instance.id|safe }}"

也做好本职工作

data-id="{{ form.instance.id|safe }}"

Also do the job

逆光下的微笑 2024-11-11 13:59:51

使用 django 1.2:

data-id="{{ form.instance.id|stringformat:'d' }}"

或使用 django 1.3:

{% load l10n %}

{% localize off %}
    data-id="{{ form.instance.id|stringformat:'d' }}"
{% endlocalize %}

或(也使用 django 1.3):

data-id="{{ form.instance.id|unlocalize }}"

with django 1.2:

data-id="{{ form.instance.id|stringformat:'d' }}"

or, with django 1.3:

{% load l10n %}

{% localize off %}
    data-id="{{ form.instance.id|stringformat:'d' }}"
{% endlocalize %}

or (also with django 1.3):

data-id="{{ form.instance.id|unlocalize }}"
旧情别恋 2024-11-11 13:59:51

这并不能真正回答您的问题,但请查看 文档。它说使用 {{ |unlocalize }} 过滤器或:

{% localize on %}
    {{ value }}
{% endlocalize %}

{% localize off %}
    {{ value }}
{% endlocalize %}

可能有更好的方法,但我认为您可以编写一个方法,为每个模型提供模型中的 id 作为字符串您正在尝试在模板中显示 id。

class MyModel(models.Model):
    pass

    def str_id(self):
        return u'%s' % self.id

在你的模板中:

{{ form.instance.str_id }}

This doesn't really answer your question but check out this section of the docs. It says to use {{ |unlocalize }} filter or:

{% localize on %}
    {{ value }}
{% endlocalize %}

{% localize off %}
    {{ value }}
{% endlocalize %}

There's probably a better way but I'm thinking that you could write a method that gives you the id as a string in your model for each model you are trying to display the id in a template.

class MyModel(models.Model):
    pass

    def str_id(self):
        return u'%s' % self.id

in your template:

{{ form.instance.str_id }}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文