PageSourceSearch

https://apitemplate.io/docs/assets/js/04a95a72.1be46bd1.js

js apitemplate.io collected 2026-10-03 21:33:50 UTC 20,298 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkdocs_site=self.webpackChunkdocs_site||[]).push([["6905"],{3625(e,A,i){i.r(A),i.d(A,{metadata:()=>t,default:()=>I,frontMatter:()=>r,contentTitle:()=>l,toc:()=>o,assets:()=>E});var t=JSON.parse('{"id":"template-language/introduction","title":"Introduction to Jinja2 Template Language","description":"Learn the Jinja2 template language used by APITemplate.io. Understand variables, control flow, comments, and how templates merge with JSON data to produce dynamic output.","source":"@site/docs/template-language/introduction.md","sourceDirName":"template-language","slug":"/template-language/introduction","permalink":"/docs/template-language/introduction","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"sidebar_position":1,"title":"Introduction to Jinja2 Template Language","description":"Learn the Jinja2 template language used by APITemplate.io. Understand variables, control flow, comments, and how templates merge with JSON data to produce dynamic output.","keywords":["Jinja2","template language","Jinja2 tutorial","template syntax","dynamic templates","Jinja2 variables","APITemplate.io templates"]},"sidebar":"docsSidebar","previous":{"title":"Advanced PDF Topics","permalink":"/docs/pdf-generation/advanced-pdf-topics"},"next":{"title":"Jinja2 Variables","permalink":"/docs/template-language/variables"}}'),n=i(4848),a=i(8453);let r={sidebar_position:1,title:"Introduction to Jinja2 Template Language",description:"Learn the Jinja2 template language used by APITemplate.io. Understand variables, control flow, comments, and how templates merge with JSON data to produce dynamic output.",keywords:["Jinja2","template language","Jinja2 tutorial","template syntax","dynamic templates","Jinja2 variables","APITemplate.io templates"]},l="Introduction to Jinja2",E={},o=[{value:"How it works",id:"how-it-works",level:2},{value:"Example",id:"example",level:3},{value:"Jinja2 syntax at a glance",id:"jinja2-syntax-at-a-glance",level:2},{value:"What you can do with Jinja2",id:"what-you-can-do-with-jinja2",level:2},{value:"Next steps",id:"next-steps",level:2}];function s(e){let A={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(A.header,{children:(0,n.jsx)(A.h1,{id:"introduction-to-jinja2",children:"Introduction to Jinja2"})}),"\n",(0,n.jsxs)(A.p,{children:["APITemplate.io uses ",(0,n.jsx)(A.strong,{children:"Jinja2"})," as its template language. If you've used Python or similar templating systems, you'll feel right at home. If not, don't worry \u2014 it's straightforward to learn."]}),"\n",(0,n.jsx)(A.p,{children:"Jinja2 lets you combine an HTML template with JSON data to produce dynamic output. You write your template once with placeholders, and the values get filled in every time you generate a document."}),"\n",(0,n.jsx)(A.h2,{id:"how-it-works",children:"How it works"}),"\n",(0,n.jsx)(A.p,{children:(0,n.jsx)(A.img,{alt:"Template rendering overview",src:i(6526).A+"",width:"545",height:"307"})}),"\n",(0,n.jsx)(A.p,{children:"You have two ingredients:"}),"\n",(0,n.jsxs)(A.ol,{children:["\n",(0,n.jsxs)(A.li,{children:[(0,n.jsx)(A.strong,{children:"A template"})," \u2014 HTML with special placeholders"]}),"\n",(0,n.jsxs)(A.li,{children:[(0,n.jsx)(A.strong,{children:"JSON data"})," \u2014 the values to fill in"]}),"\n"]}),"\n",(0,n.jsx)(A.p,{children:"When you render the template, Jinja2 replaces the placeholders with your data."}),"\n",(0,n.jsx)(A.h3,{id:"example",children:"Example"}),"\n",(0,n.jsx)(A.p,{children:(0,n.jsx)(A.strong,{children:"JSON data:"})}),"\n",(0,n.jsx)(A.pre,{children:(0,n.jsx)(A.code,{className:"language-json",children:'{\n  "product": "Apple Juice",\n  "made_in": "Singapore"\n}\n'})}),"\n",(0,n.jsx)(A.p,{children:(0,n.jsx)(A.strong,{children:"Template:"})}),"\n",(0,n.jsx)(A.pre,{children:(0,n.jsx)(A.code,{className:"language-html",children:"The product is {{product}}, made in {{made_in}}.\n"})}),"\n",(0,n.jsx)(A.p,{children:(0,n.jsx)(A.strong,{children:"Output:"})}),"\n",(0,n.jsx)(A.pre,{children:(0,n.jsx)(A.code,{children:"The product is Apple Juice, made in Singapore.\n"})}),"\n",(0,n.jsx)(A.h2,{id:"jinja2-syntax-at-a-glance",children:"Jinja2 syntax at a glance"}),"\n",(0,n.jsx)(A.p,{children:"There are three main delimiters you'll use:"}),"\n",(0,n.jsxs)(A.table,{children:[(0,n.jsx)(A.thead,{children:(0,n.jsxs)(A.tr,{children:[(0,n.jsx)(A.th,{children:"Syntax"}),(0,n.jsx)(A.th,{children:"Purpose"}),(0,n.jsx)(A.th,{children:"Example"})]})}),(0,n.jsxs)(A.tbody,{children:[(0,n.jsxs)(A.tr,{children:[(0,n.jsx)(A.td,{children:(0,n.jsx)(A.code,{children:"{{ ... }}"})}),(0,n.jsx)(A.td,{children:"Output a variable or expression"}),(0,n.jsx)(A.td,{children:(0,n.jsx)(A.code,{children:"{{ name }}"})})]}),(0,n.jsxs)(A.tr,{children:[(0,n.jsx)(A.td,{children:(0,n.jsx)(A.code,{children:"{% ... %}"})}),(0,n.jsx)(A.td,{children:"Control flow (if, for, etc.)"}),(0,n.jsx)(A.td,{children:(0,n.jsx)(A.code,{children:"{% if active %}...{% endif %}"})})]}),(0,n.jsxs)(A.tr,{children:[(0,n.jsx)(A.td,{children:(0,n.jsx)(A.code,{children:"{# ... #}"})}),(0,n.jsx)(A.td,{children:"Comments (not rendered)"}),(0,n.jsx)(A.td,{children:(0,n.jsx)(A.code,{children:"{# This is a note #}"})})]})]})]}),"\n",(0,n.jsx)(A.h2,{id:"what-you-can-do-with-jinja2",children:"What you can do with Jinja2"}),"\n",(0,n.jsxs)(A.ul,{children:["\n",(0,n.jsxs)(A.li,{children:[(0,n.jsx)(A.strong,{children:"Variables"})," \u2014 insert dynamic text, numbers, dates"]}),"\n",(0,n.jsxs)(A.li,{children:[(0,n.jsx)(A.strong,{children:"Conditions"})," \u2014 show or hide content based on data"]}),"\n",(0,n.jsxs)(A.li,{children:[(0,n.jsx)(A.strong,{children:"Loops"})," \u2014 repeat sections for lists and arrays"]}),"\n",(0,n.jsxs)(A.li,{children:[(0,n.jsx)(A.strong,{children:"Filters"})," \u2014 transform data (uppercase, format currency, render QR codes)"]}
1),"\n",(0,n.jsxs)(A.li,{children:[(0,n.jsx)(A.strong,{children:"Date formatting"})," \u2014 parse and format dates and timestamps"]}),"\n"]}),"\n",(0,n.jsx)(A.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,n.jsxs)(A.ul,{children:["\n",(0,n.jsxs)(A.li,{children:[(0,n.jsx)(A.a,{href:"/template-language/variables",children:"Variables"})," \u2014 the basics of inserting data"]}),"\n",(0,n.jsxs)(A.li,{children:[(0,n.jsx)(A.a,{href:"/template-language/conditions",children:"Conditions"})," \u2014 if/elif/else logic"]}),"\n",(0,n.jsxs)(A.li,{children:[(0,n.jsx)(A.a,{href:"/template-language/loops",children:"Loops"})," \u2014 repeating content"]}),"\n",(0,n.jsxs)(A.li,{children:[(0,n.jsx)(A.a,{href:"/template-language/filters",children:"Default Filters"})," \u2014 transforming data"]}),"\n",(0,n.jsxs)(A.li,{children:[(0,n.jsx)(A.a,{href:"/template-language/apitemplate-filters",children:"APITemplate.io Filters"})," \u2014 QR codes, barcodes, tables, dates, and currency"]}),"\n"]}),"\n",(0,n.jsx)(A.admonition,{type:"tip",children:(0,n.jsxs)(A.p,{children:["You can learn the full Jinja2 syntax from the ",(0,n.jsx)(A.a,{href:"https://jinja.palletsprojects.com/en/3.0.x/templates/",children:"official Jinja2 documentation"}),". APITemplate.io supports all standard Jinja2 features, plus custom filters for QR codes, barcodes, and tables."]})})]})}function I(e={}){let{wrapper:A}={...(0,a.R)(),...e.components};return A?(0,n.jsx)(A,{...e,children:(0,n.jsx)(s,{...e})}):s(e)}},6526(e,A,i){i.d(A,{A:()=>t});let t="data:image/png;base64,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"},8453(e,A,i){i.d(A,{R:()=>r,x:()=>l});var t=i(6540);let n={},a=t.createContext(n);function r(e){let A=t.useContext(a);return t.useMemo(function(){return"function"==typeof e?e(A):{...A,...e}},[A,e])}function l(e){let A;return A=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),t.createElement(a.Provider,{value:A},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.