{"title":"Conas aschur CSV a chruthú","version":"6.0","locale":"ga","docname":"howto/outputting-csv","url":"/ga/6.0/howto/outputting-csv/","canonical":"https://djangodocs.dev/ga/6.0/howto/outputting-csv/","summary":"Míníonn an doiciméad seo conas CSV (Luachanna Scartha Coma) a aschur go dinimiciúil ag úsáid radhairc Django. Chun seo a dhéanamh, is féidir leat leabharlann Python…","html":"<h1>Conas aschur CSV a chruthú<a class=\"heading-anchor\" href=\"#how-to-create-csv-output\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Míníonn an doiciméad seo conas CSV (Luachanna Scartha Coma) a aschur go dinimiciúil ag úsáid radhairc Django. Chun seo a dhéanamh, is féidir leat leabharlann Python CSV nó an córas teimpléid Django a úsáid.</p>\n<section id=\"using-the-python-csv-library\">\n<h2>Leabharlann Python CSV a úsáid<a class=\"heading-anchor\" href=\"#using-the-python-csv-library\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tagann Python le leabharlann CSV,: mod: csv. Is é an eochair chun é a úsáid le Django ná go ngníomhaíonn cumas cruthaithe CSV an mhodúil:mod: csv ar rudaí cosúil le comhad, agus is rudaí cosúil le comhad iad rudaí djangos:class: ~django.http.http.HttpResponse.</p>\n<p>Seo sampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">csv</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">some_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"c1\"># Create the HttpResponse object with the appropriate CSV header.</span>\n    <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span>\n        <span class=\"n\">content_type</span><span class=\"o\">=</span><span class=\"s2\">&quot;text/csv&quot;</span><span class=\"p\">,</span>\n        <span class=\"n\">headers</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;Content-Disposition&quot;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;attachment; filename=&quot;somefilename.csv&quot;&#39;</span><span class=\"p\">},</span>\n    <span class=\"p\">)</span>\n\n    <span class=\"n\">writer</span> <span class=\"o\">=</span> <span class=\"n\">csv</span><span class=\"o\">.</span><span class=\"n\">writer</span><span class=\"p\">(</span><span class=\"n\">response</span><span class=\"p\">)</span>\n    <span class=\"n\">writer</span><span class=\"o\">.</span><span class=\"n\">writerow</span><span class=\"p\">([</span><span class=\"s2\">&quot;First row&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Foo&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Bar&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Baz&quot;</span><span class=\"p\">])</span>\n    <span class=\"n\">writer</span><span class=\"o\">.</span><span class=\"n\">writerow</span><span class=\"p\">([</span><span class=\"s2\">&quot;Second row&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;A&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;B&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;C&quot;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;&quot;Testing&quot;&#39;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Here&#39;s a quote&quot;</span><span class=\"p\">])</span>\n\n    <span class=\"k\">return</span> <span class=\"n\">response</span>\n</code></pre></div>\n<p>Ba chóir go mbeadh an cód agus na tuairimí féinmhínithe, ach tá cúpla rud tuillte ag lua:</p>\n<ul class=\"simple\">\n<li><p>Faigheann an freagra cineál speisialta MIME,: mimetype: text/csv. Insíonn sé seo do bhrabhsálaithe gur comhad CSV é an doiciméad, seachas comhad HTML. Má fhágann tú é seo amach, is dócha go léirmhíníonn brabhsálaithe an t-aschur mar HTML, rud a bheidh mar thoradh air go mbeidh gobbledygook gránna, scanrúil i bhfuinneog an bhrabhsálaí.</p></li>\n<li><p>Faigheann an freagra ceannteideal breise <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Content-Disposition`, ina bhfuil ainm an chomhaid CSV. Tá an t-ainm comhaid seo treallach; glaoigh air cibé rud is mian leat. Úsáidfidh brabhsálaithe é sa dialóg “Sábháil mar...”, srl.</p></li>\n<li><p>Is féidir leat dul isteach sa API giniúna CSV trí freagra ``a chur ar aghaidh mar an chéad argóint chuig `csv.writer`. Tá súil ag an bhfeidhm <code class=\"docutils literal notranslate\"><span class=\"pre\">csv.writer</span></code> réad cosúil le comhad, agus:class: ~django.http.httpResponse rudaí oiriúnach don bhille.</p></li>\n<li><p>I gcás gach sraith i do chomhad CSV, glaoigh ar writer.writerow`, ag rith u:term: iterable.</p></li>\n<li><p>Tugann an modúl CSV aire do luachan duit, mar sin ní gá duit a bheith buartha faoi teaghráin a éalú le luachana nó camóga iontu. Pas <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>writerow () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>do theagáin amh, agus déanfaidh sé an rud ceart.</p></li>\n</ul>\n<section id=\"streaming-large-csv-files\">\n<span id=\"streaming-csv-files\"></span><h3>Comhaid mhóra CSV a shruthú<a class=\"heading-anchor\" href=\"#streaming-large-csv-files\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Agus tú ag déileáil le tuairimí a ghineann freagraí an-mhóra, b'fhéidir gur mhaith leat smaoineamh ar django's:class: ~django.http.StreamInghttPresponse a úsáid ina ionad. Mar shampla, trí chomhad a shruthú a thógann sé tamall fada chun a ghiniúint is féidir leat cothromóir ualaigh a sheachaint ag scaoileadh nasc a d'fhéadfadh a bheith curtha amach ar shlí eile agus an freastalaí ag giniúint an freagra.</p>\n<p>Sa sampla seo, bainimid úsáid iomlán as gineadóirí Python chun cóimeáil agus tarchur comhad mór CSV a láimhseáil go héifeachtúil:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">csv</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">StreamingHttpResponse</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Echo</span><span class=\"p\">:</span>\n<span class=\"w\">    </span><span class=\"sd\">&quot;&quot;&quot;An object that implements just the write method of the file-like</span>\n<span class=\"sd\">    interface.</span>\n<span class=\"sd\">    &quot;&quot;&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">write</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">):</span>\n<span class=\"w\">        </span><span class=\"sd\">&quot;&quot;&quot;Write the value by returning it, instead of storing in a buffer.&quot;&quot;&quot;</span>\n        <span class=\"k\">return</span> <span class=\"n\">value</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">some_streaming_csv_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n<span class=\"w\">    </span><span class=\"sd\">&quot;&quot;&quot;A view that streams a large CSV file.&quot;&quot;&quot;</span>\n    <span class=\"c1\"># Generate a sequence of rows. The range is based on the maximum number of</span>\n    <span class=\"c1\"># rows that can be handled by a single sheet in most spreadsheet</span>\n    <span class=\"c1\"># applications.</span>\n    <span class=\"n\">rows</span> <span class=\"o\">=</span> <span class=\"p\">([</span><span class=\"s2\">&quot;Row </span><span class=\"si\">{}</span><span class=\"s2\">&quot;</span><span class=\"o\">.</span><span class=\"n\">format</span><span class=\"p\">(</span><span class=\"n\">idx</span><span class=\"p\">),</span> <span class=\"nb\">str</span><span class=\"p\">(</span><span class=\"n\">idx</span><span class=\"p\">)]</span> <span class=\"k\">for</span> <span class=\"n\">idx</span> <span class=\"ow\">in</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"mi\">65536</span><span class=\"p\">))</span>\n    <span class=\"n\">pseudo_buffer</span> <span class=\"o\">=</span> <span class=\"n\">Echo</span><span class=\"p\">()</span>\n    <span class=\"n\">writer</span> <span class=\"o\">=</span> <span class=\"n\">csv</span><span class=\"o\">.</span><span class=\"n\">writer</span><span class=\"p\">(</span><span class=\"n\">pseudo_buffer</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> <span class=\"n\">StreamingHttpResponse</span><span class=\"p\">(</span>\n        <span class=\"p\">(</span><span class=\"n\">writer</span><span class=\"o\">.</span><span class=\"n\">writerow</span><span class=\"p\">(</span><span class=\"n\">row</span><span class=\"p\">)</span> <span class=\"k\">for</span> <span class=\"n\">row</span> <span class=\"ow\">in</span> <span class=\"n\">rows</span><span class=\"p\">),</span>\n        <span class=\"n\">content_type</span><span class=\"o\">=</span><span class=\"s2\">&quot;text/csv&quot;</span><span class=\"p\">,</span>\n        <span class=\"n\">headers</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;Content-Disposition&quot;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;attachment; filename=&quot;somefilename.csv&quot;&#39;</span><span class=\"p\">},</span>\n    <span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"using-the-template-system\">\n<h2>An córas teimpléad a úsáid<a class=\"heading-anchor\" href=\"#using-the-template-system\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>De rogha air sin, is féidir leat an córas teimpléad: doc: Django a úsáid chun CSV a ghiniúint. &lt;/topics/templates&gt; Tá sé seo ar leibhéal níos ísle ná an modúl áisiúil Python: MOD: csv a úsáid, ach cuirtear an réiteach i láthair anseo le haghaidh iomláine.</p>\n<p>Is é an smaoineamh anseo liosta míreanna a chur chuig do theimpléad, agus an teimpléad a chur ar aschur na camóga in a:ttag: for lúb.</p>\n<p>Seo sampla, a ghineann an comhad CSV céanna mar thuas:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.http</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">HttpResponse</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.template</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">loader</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">some_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"c1\"># Create the HttpResponse object with the appropriate CSV header.</span>\n    <span class=\"n\">response</span> <span class=\"o\">=</span> <span class=\"n\">HttpResponse</span><span class=\"p\">(</span>\n        <span class=\"n\">content_type</span><span class=\"o\">=</span><span class=\"s2\">&quot;text/csv&quot;</span><span class=\"p\">,</span>\n        <span class=\"n\">headers</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;Content-Disposition&quot;</span><span class=\"p\">:</span> <span class=\"s1\">&#39;attachment; filename=&quot;somefilename.csv&quot;&#39;</span><span class=\"p\">},</span>\n    <span class=\"p\">)</span>\n\n    <span class=\"c1\"># The data is hardcoded here, but you could load it from a database or</span>\n    <span class=\"c1\"># some other source.</span>\n    <span class=\"n\">csv_data</span> <span class=\"o\">=</span> <span class=\"p\">(</span>\n        <span class=\"p\">(</span><span class=\"s2\">&quot;First row&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Foo&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Bar&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Baz&quot;</span><span class=\"p\">),</span>\n        <span class=\"p\">(</span><span class=\"s2\">&quot;Second row&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;A&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;B&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;C&quot;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;&quot;Testing&quot;&#39;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Here&#39;s a quote&quot;</span><span class=\"p\">),</span>\n    <span class=\"p\">)</span>\n\n    <span class=\"n\">t</span> <span class=\"o\">=</span> <span class=\"n\">loader</span><span class=\"o\">.</span><span class=\"n\">get_template</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_template_name.txt&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">c</span> <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;data&quot;</span><span class=\"p\">:</span> <span class=\"n\">csv_data</span><span class=\"p\">}</span>\n    <span class=\"n\">response</span><span class=\"o\">.</span><span class=\"n\">write</span><span class=\"p\">(</span><span class=\"n\">t</span><span class=\"o\">.</span><span class=\"n\">render</span><span class=\"p\">(</span><span class=\"n\">c</span><span class=\"p\">))</span>\n    <span class=\"k\">return</span> <span class=\"n\">response</span>\n</code></pre></div>\n<p>Is é an t-aon difríocht idir an sampla seo agus an sampla roimhe seo ná go n-úsáideann an ceann seo luchtú teimpléid in ionad an modúl CSV. Tá an chuid eile den chód - mar shampla an <code class=\"docutils literal notranslate\"><span class=\"pre\">content_type='text/csv'</span></code> - mar an gcéanna.</p>\n<p>Ansin, cruthaigh an teimpléad <code class=\"docutils literal notranslate\"><span class=\"pre\">my_template_name.txt</span></code>, leis an gcód teimpléad seo:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">row</span> <span class=\"k\">in</span> <span class=\"nv\">data</span> <span class=\"cp\">%}</span>&quot;<span class=\"cp\">{{</span> <span class=\"nv\">row.0</span><span class=\"o\">|</span><span class=\"nf\">addslashes</span> <span class=\"cp\">}}</span>&quot;, &quot;<span class=\"cp\">{{</span> <span class=\"nv\">row.1</span><span class=\"o\">|</span><span class=\"nf\">addslashes</span> <span class=\"cp\">}}</span>&quot;, &quot;<span class=\"cp\">{{</span> <span class=\"nv\">row.2</span><span class=\"o\">|</span><span class=\"nf\">addslashes</span> <span class=\"cp\">}}</span>&quot;, &quot;<span class=\"cp\">{{</span> <span class=\"nv\">row.3</span><span class=\"o\">|</span><span class=\"nf\">addslashes</span> <span class=\"cp\">}}</span>&quot;, &quot;<span class=\"cp\">{{</span> <span class=\"nv\">row.4</span><span class=\"o\">|</span><span class=\"nf\">addslashes</span> <span class=\"cp\">}}</span>&quot;\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>Athraíonn an teimpléad gearr seo thar na sonraí a thugtar agus taispeánann sé líne CSV do gach sraith. Úsáideann sé an scagaire teimpléad:tfilter: addslashes chun a chinntiú nach bhfuil aon fhadhbanna le luachana.</p>\n</section>\n<section id=\"other-text-based-formats\">\n<h2>Formáidí téacs-bhunaithe eile<a class=\"heading-anchor\" href=\"#other-text-based-formats\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tabhair faoi deara nach bhfuil an-shonrach ann maidir le CSV anseo - díreach an fhormáid aschuir ar leith. Is féidir leat ceachtar de na teicnící seo a úsáid chun aon fhormáid téacs-bhunaithe is féidir leat a aisling a aschur. Is féidir leat teicníc den chineál céanna a úsáid freisin chun sonraí dénártha treallach a ghiniúint; féach:doc: /howto/outputting-pdf mar shampla.</p>\n</section>","rootId":"how-to-create-csv-output","toc":[{"title":"Leabharlann Python CSV a úsáid","anchor":"using-the-python-csv-library","children":[{"title":"Comhaid mhóra CSV a shruthú","anchor":"streaming-large-csv-files","children":[]}]},{"title":"An córas teimpléad a úsáid","anchor":"using-the-template-system","children":[]},{"title":"Formáidí téacs-bhunaithe eile","anchor":"other-text-based-formats","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"Treoracha conas","url":"/ga/6.0/howto/"}],"prev":{"docname":"howto/custom-lookups","title":"Conas cuardaigh saincheaptha a scríobh","url":"/ga/6.0/howto/custom-lookups/"},"next":{"docname":"howto/outputting-pdf","title":"Conas comhaid PDF a chruthú","url":"/ga/6.0/howto/outputting-pdf/"},"formats":{"html":"/ga/6.0/howto/outputting-csv/","markdown":"/ga/6.0/howto/outputting-csv.md","json":"/ga/6.0/howto/outputting-csv.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/howto/outputting-csv.txt","official":"https://docs.djangoproject.com/ga/6.0/howto/outputting-csv/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}