【问题标题】:Django template language shortens wordsDjango模板语言缩短单词
【发布时间】:2017-11-01 10:17:03
【问题描述】:

我想显示用户为其用户个人资料选择的语言。 一切正常我只是无法显示完整的语言名称。所以当我写{{user.userprofile.language}} 时,html 输出是“英语、西班牙语、法语”,但是当我写{{user.userprofile.language.0}} 时,我得到的是“en”而不是“English”。

我现在拥有的:

<span>En</span>

<span>Fr</span>

<span>Sp</span>

我想要什么:

<span>English</span>

<span>French</span>

<span>Spanish</span>

有人知道如何显示完整的价值吗?

编辑:

class UserProfile(models.Model):
    language = MultiSelectField(max_choices=3,choices=settings.LANGUAGES, default='en')

settings.py:

LANGUAGES = (
('en', _('English')),
('pt', _('Portuguese')),
('dt', _('Deutsch')),
('sp', _('Spanish')),
('fr', _('French')),
('nl', _('Dutch')),
('pl', _('Polish')),
('au', _('Austrian')),
('ch', _('Schweizerisch')),
('hr', _('Kroatisch')),
('ru', _('Russian')),
)

【问题讨论】:

  • 完整值是多少?你会英语吗?所以呢?
  • 我没有得到“English”当我做 {{user.userprofile.language.0}} 时得到“en”,但我想得到“English”。用户应该看到完整的单词,而不仅仅是两个字母......
  • 你没有展示你的模型,所以我们不知道userprofile.language是什么。
  • 试试 {{user.userprofile.get_language_display}}
  • @Exprator 与 {{user.userprofile.language}} 相同,只要我在它后面写一个数字,它就只显示一个字母。而不是整个单词。所以 {{user.userprofile.get_language_display.0}} 给了我“E”而不是“English”

标签: django jinja2 django-multiselectfield


【解决方案1】:

看起来你正在使用这个django-multiselectfield 包?

阅读文档,您似乎应该按照以下方式做更多事情:

{% for code, name in user.userprofile.language %}
    <span>{{ name }}</span>
{% endfor %}

或许:

{% for code, name in user.userprofile.language.choices %}
    <span>{{ name }}</span>
{% endfor %}

这两种解决方案都适合您吗?

如果不是,请确认您的模型中的MultiSelectField 是从哪里导入的?

【讨论】:

  • from multiselectfield import MultiSelectField 是的,我使用包多选,但我认为它更像是 Django 的东西。你的回答也没有奏效。第一个代码只显示每种语言的一个字母。第二个代码什么也没显示。我使它与js一起工作。将字符串拆分并在加载时将单词附加到页面上。无论如何感谢您的帮助:)
  • 奇怪。我对那个包不太熟悉,所以如果这不起作用,恐怕我没有更好的建议。至少你开始使用 JS。
猜你喜欢
  • 2017-01-07
  • 2019-08-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 2018-11-09
  • 2019-01-01
  • 2012-11-29
  • 2010-12-26
相关资源
最近更新 更多