【问题标题】:Why can't I do a hyphen in Django template view?为什么我不能在 Django 模板视图中使用连字符?
【发布时间】:2010-02-06 13:53:22
【问题描述】:
{{profile.first-name.value}}

我的变量只是连字符...我希望我能做到 first_name,但许多变量都是连字符。 但是,由于这个问题,我无法在模板中显示我的变量。为什么?

【问题讨论】:

  • 在哪种编程语言中“许多变量都是连字符”是真的?没有我能想到的。
  • Lisp、CSS...我已经用完了。
  • 您还可以从 django 模板访问字典键。蛞蝓默认为连字符,所以如果你有一本蛞蝓字典并且你试图访问一个,那么在模板中是不可能的......

标签: python django templates


【解决方案1】:

连字符是 Python 中的运算符。如果将所有连字符都换成下划线,效果会更好。

【讨论】:

  • 我认为“会更好”应该是“不会在所有除非”。
  • 我们如何在 html 模板中用下划线交换所有连字符?
【解决方案2】:

OrderedDict 字典类型支持连字符: https://docs.python.org/2/library/collections.html#ordereddict-objects

这似乎是 OrderedDict 实施的副作用。请注意,键值对实际上是作为集合传入的。我敢打赌,OrderedDict 的实现不会使用集合中传递的“键”作为真正的 dict 键,从而解决了这个问题。

由于这是 OrderedDict 实现的副作用,因此您可能不想依赖它。但它有效。

from collections import OrderedDict

my_dict = OrderedDict([
    ('has-dash', 'has dash value'), 
    ('no dash', 'no dash value') 
])

print( 'has-dash: ' + my_dict['has-dash'] )
print( 'no dash: ' + my_dict['no dash'] )

结果:

has-dash: has dash value
no dash: no dash value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2012-04-13
    相关资源
    最近更新 更多