μλ²κ° λ€μ JSONμ λ°νν©λλ€.
{
"νλͺ©": [1,2,3]
...
}
'items'λ₯Ό λ°λ³΅νλ €λ μλλ λ€μμ μμ±ν©λλ€.
{data.items %μ elμ λν %}
....
TypeError: 'builtin_function_or_method' κ°μ²΄λ₯Ό λ°λ³΅ν μ μμ΅λλ€.
μλ Python dictμ λ΄μ₯ ν¨μ "items()"κ° μκΈ° λλ¬Έμ λ°μν©λλ€.
μμλ‘. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ JSON μλ΅μμ νν¬λ₯Ό μ€μΉνκ³ ν€ μ΄λ¦μ "items"μμ "__items"λ‘ λ³κ²½ν λ€μ μ΄λ₯Ό Jinja2μ μ λ¬νμ΅λλ€. κ·Έ μμ μμ λλ μ΄λ¦μ΄ λ°λ μμ±μ λ°λ³΅νκ³ μμ΅λλ€.
{data.__items %μ elμ λν %}
μ΄μμ μΌλ‘, Jinja2λ function() νκΈ°λ²μΌλ‘ νΉλ³ν νΈμΆλμ§ μλ ν for-loop λλ if-statementμ λ΄μ₯ ν¨μλ₯Ό 무μν΄μΌ ν©λλ€.
{% for el in data['items'] %}
λ₯Ό μ¬μ©νμ¬ νλͺ©μ μ°μ μμλ₯Ό μ§μ ν μ μμ΅λλ€. μ΄κ²μ λ¬Έμμμλ λ€λ£Ήλλ€. http://jinja.pocoo.org/docs/2.9/templates/#variables
JSON μλ΅μ λλλ‘ 'items'κ° ν¬ν¨λμ§ μμΌλ©΄ μ€ν¨ν©λλ€(μλ΅μ μ νμ μμ±μ΄λΌκ³ κ°μ ). μ΄ κ²½μ° {% for el in data['items'] %}λ λ€μμ μμ±ν©λλ€.
TypeError: 'builtin_function_or_method' κ°μ²΄λ₯Ό λ°λ³΅ν μ μμ΅λλ€.
...νλͺ©μ΄ νμ μ μλκΈ° λλ¬Έμ(λ΄μ₯ ν¨μλ‘).
κ·Έλ¦¬κ³ μ΄κ²μ λ²κ·Έμ λλ€, IMO. data['items']λ λ΄μ₯ ν¨μμ μΆ©λν΄μλ μ λ©λλ€. μ¦, μ νμ "items" μμ±μ κΉλνκ² λ°λ³΅νλ €λ©΄ μ΄λ¦μ λ³κ²½ν΄μΌ ν©λλ€. μ΄μμ μΌλ‘λ κ·Έλ μ§ μμ΅λλ€.
JSON μλ΅μ νλͺ©μ΄ ν¬ν¨λμ§ μλ μ΄μ λ 무μμ
λκΉ? μ¬κΈ°μ λ¬Έμ κ° μλμ§ μμ ν νμ ν μ μμ΅λλ€. λ°μ΄ν°κ° 무μμΈμ§ 미리 μκ³ μμ΅λλ€. ν
νλ¦Ώμμ μ΄λ―Έ μ¬μ μ in
μ°μ°μλ₯Ό μ¬μ©νμ¬ ν€λ₯Ό νμΈν μλ μμ΅λλ€.
μ΄ μμ±/νλͺ© μ§μμ μ κ±°νλ©΄ μμ² κ°μ ν νλ¦Ώμ΄ μμλκΈ° λλ¬Έμ μ΄ λμμ λ³κ²½νλ κ²μ μ ν λ¬Έμ κ° λμ§ μμ΅λλ€.
λ μ격νκ² λ§λ€κΈ° μν΄ μ무 κ²λ μμ νμ§ λ§ κ²μ μ μν©λλ€.
μ€λλ μ λ¬Έμ λ λͺ
μμ μ‘°ν νκΈ°λ²μ μ¬μ©ν λ data['items']
λ΄μ₯ μ¬μ ν¨μλ₯Ό λ°κ²¬νμ§λ§ λ°κ²¬ νμ§ μμμΌ νλ€λ κ² μ
λλ€. νμ΄μ¬μ κ·Έκ²μ νμ§ μμΌλ©°, μ§μλ ν΄μλ μ λ©λλ€. λ΄μ₯(λλ ν΄λΉ λ¬Έμ μ λν ν¨μ)μ νΈμΆν΄μΌ νλ κ²½μ° νΈμΆ νκΈ°λ²μ΄ μμ΅λλ€. data.items()
νΉλ³ν κ²½μ° dict.items
λ§€μ° λͺ
ννμ§ νμ€νμ§ μμ΅λλ€. νΉν μ¬μ©μ μ μ dict-like μ ν λλ μλ§λ OrderedDict
λν΄μλ μ¬μ ν μ€ν¨ν κ²μ΄κΈ° λλ¬Έμ νΉν κ·Έλ μ΅λλ€. κ·Έλ° κ²½μ°μλ foo['items']
λ‘ νλ κ²μ΄ μ’λ€κ³ μκ°ν©λλ€. μμ£Ό μμμ§λ μμ§λ§ μΌκ΄λ νλμ
λλ€.
μ μΌνκ² κ°λ₯ν "μμ / ν΄νΉ"λλ μΌλ° μμ± (μλ₯Όνμ§ ν¨μ νΈμΆμ΄) λ°λ³΅μμ μ¬μ© μ¬λΆλ₯Ό νμΈνκ³ λΉμ μ΄ λ°λ³΅ κ°λ₯νμ§λ§, νΈμΆνμ§ λ¬΄μΈκ°λ₯Ό λ°λ³΅νλ €κ³ νλ λ μ’μ λ°©λ²μ΄λ₯Ό hancleμ μμν μ . μ΄ κ²½μ° νλͺ©μ μλνλ©΄ κΈ°μ‘΄ μ½λκ° μμλ κ°λ₯μ±μ΄ κ±°μ μμ΅λλ€. κ·Έλ¬λ Jinjaμμ μ΄λ¬ν λμμ ꡬννλ κ²μ μλ§λ λ§€μ° λμ°ν κ²μ λλ€. ;)
μ μ΄κ²μ΄ νΉλ³ν κ²½μ°μ λκΉ? μ λ Jinjaκ° Pythonκ³Ό λκ°μ΄ νλνκΈ°λ₯Ό μμ²ν©λλ€. νΉν foo['items']λ μ¬μ©μκ° μ½μ ν ν€ "items"κ° μλ κ²½μ° Noneμ λ°νν΄μΌ ν©λλ€. μ€λλ Jinjaλ κ°μ μ΄λ¦μ λ΄μ₯ ν¨μλ₯Ό μ°Ύλ κ²μΌλ‘ λμκ°λλ€. λ°λΌμ λ¨μν Pythonμ΄ νλ λλ‘ νμμμ€.
>>> print {}.get('items')
None
Btw, λν "()"λ₯Ό μ¬μ©νμ¬ νΈμΆ κ°λ₯ νλͺ©μ νΈμΆν΄μΌ νκΈ° λλ¬Έμ λ체 νκΈ°λ² "foo.items"λ μ μ²λ¦¬λμ΄μΌ νλ€κ³ μκ°ν©λλ€. ν€λ₯Ό λλ₯΄κ±°λ μλμΌλ‘ ν¨μλ₯Ό νΈμΆνλ©΄ 그건 λ무 λμ κ² κ°μμ.
['x'] λ° .x
λν Jinja λ
Όλ¦¬λ λ€μκ³Ό κ°μ΅λλ€.
λ°λΌμ x.items
λ μμ±μ νμΈνκ³ μμ±μ΄ μ‘΄μ¬νκΈ° λλ¬Έμ μ΄λ₯Ό μ¬μ©ν©λλ€. μ΄ λ
Όλ¦¬λ λνμ μκ΄μμ΄ μ΄λ κ² μλν©λλ€. μ΄λ₯Ό κ°μ νλ €λ©΄ 컨ν
μ€νΈμ λ°λΌ μμ± μ‘°ν λ
Όλ¦¬λ₯Ό λ³κ²½ν΄μΌ ν©λλ€. κ·Έλ° λ€μμλ μλνλ λ€μ μ½λμ κ°μ μ΄μν μν©μ΄ λ°μν©λλ€.
{% for x in mydict.items %}
vs μλνμ§ μλ μ΄ μ½λ
{% set items = mydict.items %}
{% for x in items %}
κ·Έλ¦¬κ³ μ΄ κ²½μ°μ νΉλ³ν μ²λ¦¬λ₯Ό μ μ§νλ κ²μ λ³μκ° μ΄λμμ μλμ§ μΆμ νμ§ μκ³ λ λΆκ°λ₯ν κ²μ λλ€.
@slisznia λΉμ μ λ³Έμ§μ μΌλ‘ μ΄ μμ μμ μ½ 7λ λμ μ μ리μ μμλ μμ± μ‘°ν μμ€ν μ μμ ν λ³κ²½νκΈ° μν΄ Jinja2λ₯Ό μμ²νκ³ μμ΅λλ€.
μ, λλ foo['bar']
μμ± μ‘°νλ₯Ό νμ§ μλλ€λ μ μμ‘°μ°¨ λ³΄μ§ λͺ»νμ΅λλ€. κ·Έκ²μ νμ€ν λμ μκ°μ
λλ€! λ¨μν for item in data.get('items', [])
λ₯Ό μ¬μ©νλ κ²μ΄ λ¬΄μ¨ λ¬Έμ μ
λκΉ?
@ThiefMaster mydict.get('items', [])
λ λ¬Όλ‘ μλνλ©° ν€ μ΄λ¦μ λ°κΎΈλ κ²λ³΄λ€ λ€λ₯Έ λ°©λ²μ μ§μ ν΄ μ£Όμ
μ κ°μ¬ν©λλ€.
κ°μ₯ μ μ©ν λκΈ
{% for el in data['items'] %}
λ₯Ό μ¬μ©νμ¬ νλͺ©μ μ°μ μμλ₯Ό μ§μ ν μ μμ΅λλ€. μ΄κ²μ λ¬Έμμμλ λ€λ£Ήλλ€. http://jinja.pocoo.org/docs/2.9/templates/#variables