2

タプルをキーとして持つ辞書があります。例: {('tags','1'): 'name', ('name','first'):'rik', ('name','last'):'atee'}

たとえば、djangoで('name','first')の値を出力するにはどうすればよいですか? 私は dict.items.1 または dict.items.2 でそれを行うことができます - しかし、順序付けが問題になります。

4

2 に答える 2

2

Djangoテンプレート言語は、参照できる内容を意図的に制限しています。

たとえば、属性と辞書要素にアクセスするには、ドット演算子を使用する必要があります。つまり、参照するキーは文字列である必要があります。

ドキュメントから:

変数名は、任意の文字(AZ)、任意の数字(0-9)、アンダースコア(ただし、アンダースコアで始まらない)、またはドットで構成する必要があります。

https://docs.djangoproject.com/en/dev/ref/templates/api/#variables-and-lookups

オプションは、(a)ビューを使用してタプルキーを文字列形式に変更するか、(b)任意のキーで参照できる別のテンプレートエンジンを使用することです。

オプション(b)は、Djangoのテンプレート言語のスーパーセットとして設計されたDjangoのテンプレート言語ほど悪くはないので、(理論的には)すべての古いテンプレートが機能し、より多くの機能を利用できます。Jinjaテンプレート言語をチェックアウトすることをお勧めします。これには、探している機能があります。

于 2012-06-16T01:00:25.760 に答える
1

ディクショナリ内の任意の値は、対応するキーによってアクセスできます

そう...

>>> foo = {('tags','1'): 'name', ('name','first'):'rik', ('name','last'):'atee'}
>>> foo[('name','first')]
'rik'

ただし、tuples-as-keys はおそらく混乱を招き、エラーが発生しやすくなり{"tags": ['name'], "first":'rik', "last":'atee'}ます。

于 2012-06-15T23:45:00.450 に答える