{"id":428,"date":"2010-02-12T11:59:41","date_gmt":"2010-02-12T10:59:41","guid":{"rendered":"http:\/\/j-mad.com\/blog\/?p=428"},"modified":"2010-02-12T11:59:41","modified_gmt":"2010-02-12T10:59:41","slug":"unpacking-de-tuples-dans-les-templates-django","status":"publish","type":"post","link":"https:\/\/j-mad.com\/blog\/2010\/02\/12\/unpacking-de-tuples-dans-les-templates-django\/","title":{"rendered":"Unpacking de tuples dans les templates django"},"content":{"rendered":"<p>Il peut arriver que l&#8217;on est besoin de passer \u00e0 ses templates des donn\u00e9es sous la forme de tuple. Mais comment dans le template, r\u00e9cup\u00e9r\u00e9 les donn\u00e9es qui sont dans le tuple ?<\/p>\n<p>Question importante s&#8217;il en est.<\/p>\n<p>Je vous rassure tout de suite, l\u00e0 r\u00e9ponse n&#8217;est pas &#8216;construire une classe qui sert \u00e0 rien pour pouvoir faire instance.nom_donne\u00e9e_membre. &#8216;<\/p>\n<p>Il y en en fait deux m\u00e9thodes.<\/p>\n<h1>M\u00e9thode 1<\/h1>\n<p>on peut unpack (d\u00e9sol\u00e9 je n&#8217;ai pas trouv\u00e9 de traduction fran\u00e7aises pour unpack) les tuples en utilisant la notation .NumeroChamp. Petit exemple :<\/p>\n<div class=\"codecolorer-container python default\" style=\"overflow:auto;white-space:nowrap;width:435px;\"><div class=\"python codecolorer\">tuples <span class=\"sy0\">=<\/span> <span class=\"br0\">&#91;<\/span> <span class=\"br0\">&#40;<\/span> foo<span class=\"sy0\">,<\/span> barr<span class=\"sy0\">,<\/span> tut <span class=\"br0\">&#41;<\/span> <span class=\"sy0\">,<\/span> <span class=\"br0\">&#40;<\/span> a <span class=\"sy0\">,<\/span> b <span class=\"sy0\">,<\/span> c <span class=\"br0\">&#41;<\/span> <span class=\"sy0\">,<\/span> <span class=\"br0\">&#40;<\/span> x<span class=\"sy0\">,<\/span> y <span class=\"sy0\">,<\/span> z <span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#93;<\/span><br \/>\n<br \/>\n<span class=\"br0\">&#123;<\/span>% <span class=\"kw1\">for<\/span> <span class=\"kw2\">tuple<\/span> <span class=\"kw1\">in<\/span> tuples %<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#123;<\/span><span class=\"br0\">&#123;<\/span> <span class=\"kw2\">tuple<\/span><span class=\"nu0\">.0<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#125;<\/span> <span class=\"br0\">&#123;<\/span><span class=\"br0\">&#123;<\/span> <span class=\"kw2\">tuple<\/span><span class=\"nu0\">.1<\/span><span class=\"br0\">&#125;<\/span><span class=\"br0\">&#125;<\/span> <span class=\"br0\">&#123;<\/span><span class=\"br0\">&#123;<\/span> <span class=\"kw2\">tuple<\/span><span class=\"nu0\">.2<\/span> <span class=\"br0\">&#125;<\/span><span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#123;<\/span>% endfor %<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<p>C&#8217;est d\u00e9j\u00e0 pas mal, mais c&#8217;est peu lisible. Il y a donc mieux, la m\u00e9thode 2.<\/p>\n<h2>M\u00e9thode 2<\/h2>\n<p>Celle ci permet d&#8217;unpack directement vos tuples dans la boucle for, en donnant un nom \u00e0 chaque variable. Dans ce cas l\u00e0, il faut donc que chaque tuple est la m\u00eame structure.<\/p>\n<p>Imaginons par exemple que l&#8217;on construit des liens \u00e0 la vol\u00e9e, avec des tuples qui contiendraient deux champ, l&#8217;url et le nom du lien, on aurait donc :<\/p>\n<div class=\"codecolorer-container python default\" style=\"overflow:auto;white-space:nowrap;width:435px;\"><div class=\"python codecolorer\"><span class=\"br0\">&#123;<\/span>% <span class=\"kw1\">for<\/span> url <span class=\"sy0\">,<\/span> name &nbsp;<span class=\"kw1\">in<\/span> tuples %<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"sy0\">&lt;<\/span>a href<span class=\"sy0\">=<\/span><span class=\"st0\">&quot;{{url}} &quot;<\/span><span class=\"sy0\">&gt;<\/span> <span class=\"br0\">&#123;<\/span><span class=\"br0\">&#123;<\/span>name<span class=\"br0\">&#125;<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">&lt;<\/span>\/a<span class=\"sy0\">&gt;<\/span><br \/>\n<span class=\"br0\">&#123;<\/span>% endfor %<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<p>Plut\u00f4t sympa non ?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il peut arriver que l&#8217;on est besoin de passer \u00e0 ses templates des donn\u00e9es sous la forme de tuple. Mais comment dans le template, r\u00e9cup\u00e9r\u00e9 les donn\u00e9es qui sont dans le tuple ? Question importante s&#8217;il en est. Je vous rassure tout de suite, l\u00e0 r\u00e9ponse n&#8217;est pas &#8216;construire une classe qui sert \u00e0 rien &hellip; <a href=\"https:\/\/j-mad.com\/blog\/2010\/02\/12\/unpacking-de-tuples-dans-les-templates-django\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Unpacking de tuples dans les templates django<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[6],"tags":[99,98,54],"class_list":["post-428","post","type-post","status-publish","format-standard","hentry","category-django","tag-django","tag-python","tag-template"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p12cdp-6U","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/comments?post=428"}],"version-history":[{"count":1,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/428\/revisions"}],"predecessor-version":[{"id":429,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/428\/revisions\/429"}],"wp:attachment":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/media?parent=428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/categories?post=428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/tags?post=428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}