Jinja: {% empty %} ํƒœ๊ทธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2011๋…„ 12์›” 02์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pallets/jinja

Django์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ {% empty %}๋ผ๋Š” ๋ฉ‹์ง„ ํƒœ๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

{% for item in list %}
    <tr><td>{{ item }}</td></tr>
{% empty %}
    <tr><td>Nothing to show!</td></tr>
{% endfor %}

์˜ ์•ฝ์ž

{% if list %}
    {% for item in list %}
        <tr><td>{{ item }}</td?</tr>
    {% endfor %}
{% else %}
    <tr><td>Nothing to show!</td></tr>
{% endif %}

jinja๋กœ ์ „ํ™˜ํ•œ ์ดํ›„๋กœ ์ด ํƒœ๊ทธ๊ฐ€ ์ •๋ง ๊ทธ๋ฆฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค :(

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. for ๋ฃจํ”„์—์„œ {% else %} ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ Django๊ฐ€ ๋น„์–ด ์žˆ๊ธฐ ์ „์— ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์—ˆ๊ณ  Django ์˜๋ฏธ ์ฒด๊ณ„์™€ ์ผ์น˜ํ•˜๋„๋ก ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. for ๋ฃจํ”„์—์„œ {% else %} ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ Django๊ฐ€ ๋น„์–ด ์žˆ๊ธฐ ์ „์— ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์—ˆ๊ณ  Django ์˜๋ฏธ ์ฒด๊ณ„์™€ ์ผ์น˜ํ•˜๋„๋ก ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.

์•Œ ๊ฒ ์–ด์š”. ๊ทธ ๋‹ค์Œ django ์„น์…˜ ์•„๋ž˜์˜ "๋‹ค๋ฅธ ํ…œํ”Œ๋ฆฟ ์—”์ง„์—์„œ ์ „ํ™˜"์— ๋ฉ”๋ชจ๋ฅผ ํ•ด๋‘์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์„ ์Šค์œ„์นญ ๋ฌธ์„œ ์—์„œ ๋ณผ ์ˆ˜ ์—†๋‹ค. ๊ทธ๊ฒƒ์€ ์ œ์–ด ๊ตฌ์กฐ์— ์–ธ๊ธ‰๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค : ๋ฌธ์„œ์šฉ ์ด์ง€๋งŒ ์Šค์œ„์นญ ๋ฌธ์„œ์— ์žˆ๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค...

์ฝ”๋“œ์˜ list ๊ฐ€ ์ƒ์„ฑ๊ธฐ์ด๊ณ  for ๋ฐ if ๋ธ”๋ก์ด Python์—์„œ์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒฝ์šฐ if-for ๊ตฌ๋ฌธ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑ๊ธฐ๋Š” ํ•ญ์ƒ ์ง„์‹คํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ๊ตฌ์„ฑ์€ empty ๋ธ”๋ก๋ณด๋‹ค ๋œ ๊ด€์šฉ์ ์ž…๋‹ˆ๋‹ค.

๋ฃจํ”„๊ฐ€ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€, NameError: name 'item' is not defined ๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜ Jinja ์ˆ˜์ค€์—์„œ list(generator) ์— ๋„์šฐ๋ฏธ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์œ ์ผํ•œ ํ•ด๊ฒฐ์ฑ…์€ empty ๋ธ”๋ก์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ Python ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋นˆ ์ƒ์„ฑ๊ธฐ๊ฐ€ ๊ฑฐ์ง“์ด์–ด์•ผ ํ•œ๋‹ค๊ณ  ํ™•์‹ ์‹œํ‚ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค( StopIteration ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ํŒ์—… ํ•ญ๋ชฉ์„ "ํ‘ธ์‹œ๋ฐฑ"ํ•˜์—ฌ ์ถ”์•…ํ•œ ๊ฒ€์‚ฌ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด).

Jinja์˜ else ๋ธ”๋ก์€ ์ด๋ฏธ Django์˜ empty ๋ธ”๋ก์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰