SlideShare a Scribd company logo

Python - Jinja2
Eueung Mulyana
http://eueung.github.io/python/jinja2
Python CodeLabs | Attribution-ShareAlike CC BY-SA
1 / 27
Agenda
Jinja Basics
Rendering to Files
Jinja + Flask
2 / 27
 Jinja Basics
3 / 27
Example #1/1-2
HelloJohnDoe!
Myfavoritenumbers:123456789
fromjinja2importTemplate
template=Template('Hello{{name}}!')
printtemplate.render(name='JohnDoe')
t=Template("Myfavoritenumbers:{%forninrange(1,10)%}{{n}}"
printt.render()
<title></title>
<ul>
<li><ahref="abc@gmail.com">abc</a></li>
<li><ahref="123@gmail.com">123</a></li>
</ul>
fromjinja2importTemplate
template=Template('''
<title>{%blocktitle%}{%endblock%}</title>
<ul>
{%foruserinusers-%}
<li><ahref="{{user.url}}">{{user.username}}</a></li>
{%endfor-%}
</ul>''')
printtemplate.render(title='titlestring',users=[{'username'
4 / 27
Example #1/3
<html><head><title>HelloTitle</title></head>
<body>Hello.</body>
</html>
fromjinja2importEnvironment
HTML="""
<html><head><title>{{title}}</title></head>
<body>Hello.</body>
</html>
"""
defprint_html():
printEnvironment().from_string(HTML).render(title='Hello
print_html()
5 / 27
Example #2/1
<html>
<head>
<title>{{title}}</title>
</head>
<body>
Hello.
</body>
</html>
basic-1.html
fromjinja2importEnvironment,FileSystemLoader
THIS_DIR='templates'
defprint_html():
j2_env=Environment(loader=FileSystemLoader(THIS_DIR),trim_blocks=
printj2_env.get_template('basic-1.html').render(
title='HelloTitle'
)
print_html()
<html>
<head>
<title>HelloTitle</title>
</head>
<body>
Hello.
</body>
</html>
6 / 27
Example #2/2
importjinja2
templateLoader=jinja2.FileSystemLoader(searchpath="templates"
templateEnv=jinja2.Environment(loader=templateLoader)
TEMPLATE_FILE="basic-2.html"
template=templateEnv.get_template(TEMPLATE_FILE)
FAVORITES=["chocolates","lunareclipses","rabbits"]
templateVars={"title":"TestExample",
"description":"Asimpleinquiryoffunction."
"favorites":FAVORITES}
printtemplate.render(templateVars)
<!doctypehtml>
<htmllang="en">
<head>
<metacharset="UTF-8"/>
<title>{{title}}</title>
<metaname="description"content="{{description}}"/>
</head>
<body>
<divid="content">
<p>MyFavoriteThings:</p>
<ul>
{%foriteminfavorites-%}
<li>{{item}}</li>
{%endfor-%}
</ul>
</div>
</body>
</html>
basic-2.html
7 / 27
Example #2/2
<!doctypehtml>
<htmllang="en">
<head>
<metacharset="UTF-8"/>
<title>TestExample</title>
<metaname="description"content="Asimpleinquiryoffunction."
</head>
<body>
<divid="content">
<p>MyFavoriteThings:</p>
<ul>
<li>chocolates</li>
<li>lunareclipses</li>
<li>rabbits</li>
</ul>
</div>
</body>
</html>
8 / 27
Example #2/3
basic-3.html
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8"/>
<title>TestJinja2</title>
</head>
<body>
<center>
<h1>HelloJinja2</h1>
<p>BuiltinFilters-{{urls|length}}links</p>
</center>
<olalign="left">
{%setcounter=0-%}
{%forurlinurls-%}
{%setcounter=counter+1-%}
<li><ahref="{{url}}">{{url}}</a>|counterinside:{{counter}}
{%endfor-%}
</ol>
<p>counteroutside:{{counter}}</p>
</body>
</html>
importos
fromjinja2importEnvironment,FileSystemLoader
PATH='.'
TEMPLATE_ENVIRONMENT=Environment(
autoescape=False,
loader=FileSystemLoader(os.path.join(PATH,'templates')),
trim_blocks=False)
defrender_template(template_filename,context):
returnTEMPLATE_ENVIRONMENT.get_template(template_filename
defcreate_index_html():
fname="results/output-basic-3.html"
urls=['http://example.com/1','http://example.com/2',
context={
'urls':urls
}
withopen(fname,'w')asf:
html=render_template('basic-3.html',context)
f.write(html)
create_index_html()
9 / 27
output-basic-3.html
10 / 27
 Rendering to Files
Based on the Codes by @mjhea0 (Michael Herman/Real Python)
11 / 27
importos
fromjinja2importEnvironment,FileSystemLoader
PATH='.'
TEMPLATE_ENVIRONMENT=Environment(
autoescape=False,
loader=FileSystemLoader(os.path.join(PATH,'templates')),
trim_blocks=False)
defrender_template(template_filename,context):
returnTEMPLATE_ENVIRONMENT.get_template(template_filename).render(context)
defcreate_index_html():
fname="results/output-t-0.html"
my_string="Hello!"
my_list=[0,1,2,3,4,5]
context={
'title':'titlet-0',
'my_string':my_string,
'my_list':my_list
}
withopen(fname,'w')asf:
html=render_template('t-0.html',context)
f.write(html)
create_index_html()
Example t-0
<divclass="container">
<p>Mystring:{{my_string}}</p>
<p>Valuefromthelist:{{my_list[3]}}</p>
<p>Loopthroughthelist:</p>
<ul>
{%forninmy_list%}
<li>{{n}}</li>
{%endfor%}
</ul>
</div>
t-0.html (partial)
12 / 27
output-t-0.html
13 / 27
Example t-1
{%extends"t-layout-1.html"%}
{%blockcontent%}
<h3>Thisisthestartofmychildtemplate</h3>
<br>
<p>Mystring:{{my_string}}</p>
<p>Valuefromthelist:{{my_list[3]}}</p>
<p>Loopthroughthelist:</p>
<ul>
{%forninmy_list%}
<li>{{n}}</li>
{%endfor%}
</ul>
<h3>Thisistheendofmychildtemplate</h3>
{%endblock%}
t-1.html
<divclass="container">
<h2>Thisispartofmybasetemplate</h2>
<br>
{%blockcontent%}{%endblock%}
<br>
<h2>Thisispartofmybasetemplate</h2>
</div>
t-layout-1.html (partial)
14 / 27
output-t-1.html
15 / 27
Example t-2
{%extends"t-layout-2.html"%}
{%blockpage%}Home{%endblock%}
{%blockheading%}
{{super()}}
{%endblock%}
{%blockcontent%}
<h3>Thisisthestartofmychildtemplate</h3>
<br>
<p>Mystring:{{my_string}}</p>
<p>Valuefromthelist:{{my_list[3]}}</p>
<p>Loopthroughthelist:</p>
<ul>
{%forninmy_list%}
<li>{{n}}</li>
{%endfor%}
</ul>
<h3>Thisistheendofmychildtemplate</h3>
{%endblock%}
t-2.html
t-layout-2.html (partial)
<divclass="container">
{%blockheading%}
<h1>{%blockpage%}{%endblock%}-FlaskSuperExample
{%endblock%}
<h2>Thisispartofmybasetemplate</h2>
<br>
{%blockcontent%}{%endblock%}
<br>
<h2>Thisispartofmybasetemplate</h2>
</div>
16 / 27
output-t-2.html
17 / 27
Example t-3
t-3.html
{%extends"t-layout-3.html"%}
{%blocktitle%}{{title}}{%endblock%}
{%blockhead%}
{{super()}}
{%endblock%}
{%blockpage%}{{title}}{%endblock%}
{%blockheading%}{{super()}}{%endblock%}
{%blockcontent%}
<h3>Thisisthestartofmychildtemplate</h3><br><br>
<p>Mystring:{{my_string}}</p>
<p>Valuefromthelist:{{my_list[3]}}</p>
<p>Loopthroughthelist:</p>
<ul>{%forninmy_list%}
<li>{{n}}</li>
{%endfor%}</ul>
<br><p>Samelistwithafilter:{{my_list|join(',')}}</
<h3>Thisistheendofmychildtemplate</h3>
{%blocktrailer%}{{super()}}{%endblock%}
{%endblock%}
t-layout-3.html (partial)
<divclass="container">
{%blockheading%}
<h1>{%blockpage%}{%endblock%}-FlaskSuperExample
{%endblock%}
<h2>Thisispartofmybasetemplate</h2>
<br>
{%blockcontent%}{%endblock%}
<br>
<h2>Thisispartofmybasetemplate</h2>
<br>
<divclass="trailer">
{%blocktrailer%}
Watch!Thiswillbeaddedtomybaseandchildtemplates
<br><br><br>
{%endblock%}
</div>
18 / 27
Example t-3
{%macronav_link(endpoint,name)%}
<li><ahref="#{{endpoint}}">{{name}}</a></li>
{%endmacro%}
t-macro-3.html
t-layout-3.html (partial)
{%from"t-macro-3.html"importnav_linkwithcontext%}
<!DOCTYPEhtml>
...
{%blockhead%}
<title>{%blocktitle%}{%endblock%}-FlaskSuperExample
{%endblock%}
...
<divid="navbar"class="collapsenavbar-collapse">
<ulclass="navnavbar-nav">
{{nav_link('home','Home')}}
{{nav_link('about','About')}}
{{nav_link('contact','ContactUs')}}
<liclass="dropdown">
...</li>
</ul>
</div>
19 / 27
output-t-3.html
20 / 27
 Jinja + Flask
21 / 27
fromflaskimportFlask,render_template
importdatetime
app=Flask(__name__)
#---------------------------------------------
@app.template_filter()
defdatetimefilter(value,format='%Y/%m/%d%H:%M'):
returnvalue.strftime(format)
app.jinja_env.filters['datetimefilter']=datetimefilter
#---------------------------------------------
@app.route("/")
deftemplate_test():
returnrender_template('f-template.html',my_string="Wheeeee!"
@app.route("/home")
defhome():
returnrender_template('f-template.html',my_string="Foo"
@app.route("/about")
defabout():
returnrender_template('f-template.html',my_string="Bar"
@app.route("/contact")
defcontact():
returnrender_template('f-template.html',my_string="FooBar"
#---------------------------------------------
if__name__=='__main__':
app.run(host='0.0.0.0',debug=True)
Example #4
f-macro.html
{%macronav_link(endpoint,name)%}
{%ifrequest.endpoint.endswith(endpoint)%}
<liclass="active"><ahref="{{url_for(endpoint)}}">{{name}
{%else%}
<li><ahref="{{url_for(endpoint)}}">{{name}}</a></li>
{%endif%}
{%endmacro%}
22 / 27
Example #4
f-template.html
{%extends"f-layout.html"%}
{%blocktitle%}{{title}}{%endblock%}
{%blockhead%}{{super()}}{%endblock%}
{%blockpage%}{{title}}{%endblock%}
{%blockheading%}{{super()}}{%endblock%}
{%blockcontent%}
<h3>Thisisthestartofmychildtemplate</h3>
<br>
<h4>Currentdate/time:{{current_time|datetimefilter}}
<br>
<p>Mystring:{{my_string}}</p>
<p>Valuefromthelist:{{my_list[3]}}</p>
<p>Loopthroughthelist:</p>
<ul>
{%forninmy_list%}
<li>{{n}}</li>
{%endfor%}
</ul>
<br>
<p>Samelistwithafilter:{{my_list|join(',')}}</p>
<h3>Thisistheendofmychildtemplate</h3>
{%blocktrailer%}{{super()}}{%endblock%}
{%endblock%}
23 / 27
http://localhost:5000
24 / 27
http://localhost:5000/about
25 / 27
References
1. Welcome to Jinja2 — Jinja2 Documentation
2. Introduction
3. Tips and Tricks
4. Template Designer
5. Primer on Jinja Templating - Real Python
Other Readings
1. Jinja2 Example | Python Adventures
2. Jinja2 Examples
3. Quickstart Guide to Using Jinja2
26 / 27

END
Eueung Mulyana
http://eueung.github.io/python/jinja2
Python CodeLabs | Attribution-ShareAlike CC BY-SA
27 / 27

More Related Content

What's hot

Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
Jonathan Holloway
 
Advance Java Topics (J2EE)
Advance Java Topics (J2EE)Advance Java Topics (J2EE)
Advance Java Topics (J2EE)
slire
 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
Steffen Gebert
 
Automation - web testing with selenium
Automation - web testing with seleniumAutomation - web testing with selenium
Automation - web testing with selenium
Tzirla Rozental
 
Jenkins 101: Getting Started
Jenkins 101: Getting StartedJenkins 101: Getting Started
Jenkins 101: Getting Started
R Geoffrey Avery
 
Jenkins tutorial for beginners
Jenkins tutorial for beginnersJenkins tutorial for beginners
Jenkins tutorial for beginners
BugRaptors
 
Different wait methods or commands in Selenium
Different wait methods or commands in SeleniumDifferent wait methods or commands in Selenium
Different wait methods or commands in Selenium
Vinay Kumar Pulabaigari
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
HarikaReddy115
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
Ashok Kumar
 
Data driven Automation Framework with Selenium
Data driven Automation Framework with Selenium Data driven Automation Framework with Selenium
Data driven Automation Framework with Selenium
Edureka!
 
Jdbc architecture and driver types ppt
Jdbc architecture and driver types pptJdbc architecture and driver types ppt
Jdbc architecture and driver types ppt
kamal kotecha
 
Learn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat ShahriyarLearn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat Shahriyar
Abir Mohammad
 
Jenkins Tutorial.pdf
Jenkins Tutorial.pdfJenkins Tutorial.pdf
Jenkins Tutorial.pdf
devtestervicky
 
Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)
Lars Thorup
 
Selenium IDE LOCATORS
Selenium IDE LOCATORSSelenium IDE LOCATORS
Selenium IDE LOCATORS
Mindfire Solutions
 
Core java complete ppt(note)
Core java  complete  ppt(note)Core java  complete  ppt(note)
Core java complete ppt(note)
arvind pandey
 
Spring - Part 2 - Autowiring, Annotations, Java based Configuration - slides
Spring - Part 2 - Autowiring, Annotations, Java based Configuration - slidesSpring - Part 2 - Autowiring, Annotations, Java based Configuration - slides
Spring - Part 2 - Autowiring, Annotations, Java based Configuration - slides
Hitesh-Java
 
Jenkins
JenkinsJenkins
Jenkins
Roger Xia
 
Automated testing with Cypress
Automated testing with CypressAutomated testing with Cypress
Automated testing with Cypress
Yong Shean Chong
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
Martin Málek
 

What's hot (20)

Jenkins CI presentation
Jenkins CI presentationJenkins CI presentation
Jenkins CI presentation
 
Advance Java Topics (J2EE)
Advance Java Topics (J2EE)Advance Java Topics (J2EE)
Advance Java Topics (J2EE)
 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
 
Automation - web testing with selenium
Automation - web testing with seleniumAutomation - web testing with selenium
Automation - web testing with selenium
 
Jenkins 101: Getting Started
Jenkins 101: Getting StartedJenkins 101: Getting Started
Jenkins 101: Getting Started
 
Jenkins tutorial for beginners
Jenkins tutorial for beginnersJenkins tutorial for beginners
Jenkins tutorial for beginners
 
Different wait methods or commands in Selenium
Different wait methods or commands in SeleniumDifferent wait methods or commands in Selenium
Different wait methods or commands in Selenium
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
 
Data driven Automation Framework with Selenium
Data driven Automation Framework with Selenium Data driven Automation Framework with Selenium
Data driven Automation Framework with Selenium
 
Jdbc architecture and driver types ppt
Jdbc architecture and driver types pptJdbc architecture and driver types ppt
Jdbc architecture and driver types ppt
 
Learn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat ShahriyarLearn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat Shahriyar
 
Jenkins Tutorial.pdf
Jenkins Tutorial.pdfJenkins Tutorial.pdf
Jenkins Tutorial.pdf
 
Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)
 
Selenium IDE LOCATORS
Selenium IDE LOCATORSSelenium IDE LOCATORS
Selenium IDE LOCATORS
 
Core java complete ppt(note)
Core java  complete  ppt(note)Core java  complete  ppt(note)
Core java complete ppt(note)
 
Spring - Part 2 - Autowiring, Annotations, Java based Configuration - slides
Spring - Part 2 - Autowiring, Annotations, Java based Configuration - slidesSpring - Part 2 - Autowiring, Annotations, Java based Configuration - slides
Spring - Part 2 - Autowiring, Annotations, Java based Configuration - slides
 
Jenkins
JenkinsJenkins
Jenkins
 
Automated testing with Cypress
Automated testing with CypressAutomated testing with Cypress
Automated testing with Cypress
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
 

Similar to Python Templating Engine - Intro to Jinja

Django
DjangoDjango
Django
Qing Feng
 
Django tutorial 2009
Django tutorial 2009Django tutorial 2009
Django tutorial 2009
Ferenc Szalai
 
C++ Template
C++ TemplateC++ Template
C++ Template
Saket Pathak
 
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
makoto tsuyuki
 
DJ-02-Model-Single.pptx
DJ-02-Model-Single.pptxDJ-02-Model-Single.pptx
DJ-02-Model-Single.pptx
joeveller
 
Finding Clojure
Finding ClojureFinding Clojure
Finding Clojure
Matthew McCullough
 
Django - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazosDjango - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazos
Igor Sobreira
 
Learning django step 1
Learning django step 1Learning django step 1
Learning django step 1
永昇 陳
 
令和から本気出す
令和から本気出す令和から本気出す
令和から本気出す
Takashi Kitano
 
PrimeNG - Components para la Vida Real
PrimeNG - Components para la Vida RealPrimeNG - Components para la Vida Real
PrimeNG - Components para la Vida Real
cagataycivici
 
Django web framework
Django web frameworkDjango web framework
Django web framework
Abdenour Bouateli
 
Discovering Django - zekeLabs
Discovering Django - zekeLabsDiscovering Django - zekeLabs
Discovering Django - zekeLabs
zekeLabs Technologies
 
The Ring programming language version 1.9 book - Part 52 of 210
The Ring programming language version 1.9 book - Part 52 of 210The Ring programming language version 1.9 book - Part 52 of 210
The Ring programming language version 1.9 book - Part 52 of 210
Mahmoud Samir Fayed
 
Twig, the flexible, fast, and secure template language for PHP
Twig, the flexible, fast, and secure template language for PHPTwig, the flexible, fast, and secure template language for PHP
Twig, the flexible, fast, and secure template language for PHP
Fabien Potencier
 
The Ring programming language version 1.5.2 book - Part 43 of 181
The Ring programming language version 1.5.2 book - Part 43 of 181The Ring programming language version 1.5.2 book - Part 43 of 181
The Ring programming language version 1.5.2 book - Part 43 of 181
Mahmoud Samir Fayed
 
Mico: A monkey in the cloud
Mico: A monkey in the cloudMico: A monkey in the cloud
Mico: A monkey in the cloud
Andrés J. Díaz
 
Vaadin Components @ Angular U
Vaadin Components @ Angular UVaadin Components @ Angular U
Vaadin Components @ Angular U
Joonas Lehtinen
 
Twig Brief, Tips&Tricks
Twig Brief, Tips&TricksTwig Brief, Tips&Tricks
Twig Brief, Tips&Tricks
Andrei Burian
 
Odoo Experience 2018 - From a Web Controller to a Full CMS
Odoo Experience 2018 - From a Web Controller to a Full CMSOdoo Experience 2018 - From a Web Controller to a Full CMS
Odoo Experience 2018 - From a Web Controller to a Full CMS
ElínAnna Jónasdóttir
 
Add an interactive command line to your C++ application
Add an interactive command line to your C++ applicationAdd an interactive command line to your C++ application
Add an interactive command line to your C++ application
Daniele Pallastrelli
 

Similar to Python Templating Engine - Intro to Jinja (20)

Django
DjangoDjango
Django
 
Django tutorial 2009
Django tutorial 2009Django tutorial 2009
Django tutorial 2009
 
C++ Template
C++ TemplateC++ Template
C++ Template
 
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
スゴイ django - Python&Djangoで始めるWeb開発 in 札幌 #1
 
DJ-02-Model-Single.pptx
DJ-02-Model-Single.pptxDJ-02-Model-Single.pptx
DJ-02-Model-Single.pptx
 
Finding Clojure
Finding ClojureFinding Clojure
Finding Clojure
 
Django - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazosDjango - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazos
 
Learning django step 1
Learning django step 1Learning django step 1
Learning django step 1
 
令和から本気出す
令和から本気出す令和から本気出す
令和から本気出す
 
PrimeNG - Components para la Vida Real
PrimeNG - Components para la Vida RealPrimeNG - Components para la Vida Real
PrimeNG - Components para la Vida Real
 
Django web framework
Django web frameworkDjango web framework
Django web framework
 
Discovering Django - zekeLabs
Discovering Django - zekeLabsDiscovering Django - zekeLabs
Discovering Django - zekeLabs
 
The Ring programming language version 1.9 book - Part 52 of 210
The Ring programming language version 1.9 book - Part 52 of 210The Ring programming language version 1.9 book - Part 52 of 210
The Ring programming language version 1.9 book - Part 52 of 210
 
Twig, the flexible, fast, and secure template language for PHP
Twig, the flexible, fast, and secure template language for PHPTwig, the flexible, fast, and secure template language for PHP
Twig, the flexible, fast, and secure template language for PHP
 
The Ring programming language version 1.5.2 book - Part 43 of 181
The Ring programming language version 1.5.2 book - Part 43 of 181The Ring programming language version 1.5.2 book - Part 43 of 181
The Ring programming language version 1.5.2 book - Part 43 of 181
 
Mico: A monkey in the cloud
Mico: A monkey in the cloudMico: A monkey in the cloud
Mico: A monkey in the cloud
 
Vaadin Components @ Angular U
Vaadin Components @ Angular UVaadin Components @ Angular U
Vaadin Components @ Angular U
 
Twig Brief, Tips&Tricks
Twig Brief, Tips&TricksTwig Brief, Tips&Tricks
Twig Brief, Tips&Tricks
 
Odoo Experience 2018 - From a Web Controller to a Full CMS
Odoo Experience 2018 - From a Web Controller to a Full CMSOdoo Experience 2018 - From a Web Controller to a Full CMS
Odoo Experience 2018 - From a Web Controller to a Full CMS
 
Add an interactive command line to your C++ application
Add an interactive command line to your C++ applicationAdd an interactive command line to your C++ application
Add an interactive command line to your C++ application
 

More from Eueung Mulyana

FGD Big Data
FGD Big DataFGD Big Data
FGD Big Data
Eueung Mulyana
 
Hyper-Connectivity and Data Proliferation - Ecosystem Perspective
Hyper-Connectivity and Data Proliferation - Ecosystem PerspectiveHyper-Connectivity and Data Proliferation - Ecosystem Perspective
Hyper-Connectivity and Data Proliferation - Ecosystem Perspective
Eueung Mulyana
 
Industry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated World
Industry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated WorldIndustry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated World
Industry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated World
Eueung Mulyana
 
Blockchain Introduction
Blockchain IntroductionBlockchain Introduction
Blockchain Introduction
Eueung Mulyana
 
Bringing Automation to the Classroom: A ChatOps-Based Approach
Bringing Automation to the Classroom: A ChatOps-Based ApproachBringing Automation to the Classroom: A ChatOps-Based Approach
Bringing Automation to the Classroom: A ChatOps-Based Approach
Eueung Mulyana
 
FinTech & Cryptocurrency Introduction
FinTech & Cryptocurrency IntroductionFinTech & Cryptocurrency Introduction
FinTech & Cryptocurrency Introduction
Eueung Mulyana
 
Open Source Networking Overview
Open Source Networking OverviewOpen Source Networking Overview
Open Source Networking Overview
Eueung Mulyana
 
ONOS SDN Controller - Clustering Tests & Experiments
ONOS SDN Controller - Clustering Tests & Experiments ONOS SDN Controller - Clustering Tests & Experiments
ONOS SDN Controller - Clustering Tests & Experiments
Eueung Mulyana
 
Open stack pike-devstack-tutorial
Open stack pike-devstack-tutorialOpen stack pike-devstack-tutorial
Open stack pike-devstack-tutorial
Eueung Mulyana
 
Basic onos-tutorial
Basic onos-tutorialBasic onos-tutorial
Basic onos-tutorial
Eueung Mulyana
 
ONOS SDN Controller - Introduction
ONOS SDN Controller - IntroductionONOS SDN Controller - Introduction
ONOS SDN Controller - Introduction
Eueung Mulyana
 
OpenDaylight SDN Controller - Introduction
OpenDaylight SDN Controller - IntroductionOpenDaylight SDN Controller - Introduction
OpenDaylight SDN Controller - Introduction
Eueung Mulyana
 
Mininet Basics
Mininet BasicsMininet Basics
Mininet Basics
Eueung Mulyana
 
Android Programming Basics
Android Programming BasicsAndroid Programming Basics
Android Programming Basics
Eueung Mulyana
 
Cloud Computing: Overview and Examples
Cloud Computing: Overview and ExamplesCloud Computing: Overview and Examples
Cloud Computing: Overview and Examples
Eueung Mulyana
 
selected input/output - sensors and actuators
selected input/output - sensors and actuatorsselected input/output - sensors and actuators
selected input/output - sensors and actuators
Eueung Mulyana
 
Connected Things, IoT and 5G
Connected Things, IoT and 5GConnected Things, IoT and 5G
Connected Things, IoT and 5G
Eueung Mulyana
 
Connectivity for Local Sensors and Actuators Using nRF24L01+
Connectivity for Local Sensors and Actuators Using nRF24L01+Connectivity for Local Sensors and Actuators Using nRF24L01+
Connectivity for Local Sensors and Actuators Using nRF24L01+
Eueung Mulyana
 
NodeMCU with Blynk and Firebase
NodeMCU with Blynk and FirebaseNodeMCU with Blynk and Firebase
NodeMCU with Blynk and Firebase
Eueung Mulyana
 
Trends and Enablers - Connected Services and Cloud Computing
Trends and Enablers  - Connected Services and Cloud ComputingTrends and Enablers  - Connected Services and Cloud Computing
Trends and Enablers - Connected Services and Cloud Computing
Eueung Mulyana
 

More from Eueung Mulyana (20)

FGD Big Data
FGD Big DataFGD Big Data
FGD Big Data
 
Hyper-Connectivity and Data Proliferation - Ecosystem Perspective
Hyper-Connectivity and Data Proliferation - Ecosystem PerspectiveHyper-Connectivity and Data Proliferation - Ecosystem Perspective
Hyper-Connectivity and Data Proliferation - Ecosystem Perspective
 
Industry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated World
Industry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated WorldIndustry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated World
Industry 4.0 And Beyond The A.I* For Surviving A Tech-Accelerated World
 
Blockchain Introduction
Blockchain IntroductionBlockchain Introduction
Blockchain Introduction
 
Bringing Automation to the Classroom: A ChatOps-Based Approach
Bringing Automation to the Classroom: A ChatOps-Based ApproachBringing Automation to the Classroom: A ChatOps-Based Approach
Bringing Automation to the Classroom: A ChatOps-Based Approach
 
FinTech & Cryptocurrency Introduction
FinTech & Cryptocurrency IntroductionFinTech & Cryptocurrency Introduction
FinTech & Cryptocurrency Introduction
 
Open Source Networking Overview
Open Source Networking OverviewOpen Source Networking Overview
Open Source Networking Overview
 
ONOS SDN Controller - Clustering Tests & Experiments
ONOS SDN Controller - Clustering Tests & Experiments ONOS SDN Controller - Clustering Tests & Experiments
ONOS SDN Controller - Clustering Tests & Experiments
 
Open stack pike-devstack-tutorial
Open stack pike-devstack-tutorialOpen stack pike-devstack-tutorial
Open stack pike-devstack-tutorial
 
Basic onos-tutorial
Basic onos-tutorialBasic onos-tutorial
Basic onos-tutorial
 
ONOS SDN Controller - Introduction
ONOS SDN Controller - IntroductionONOS SDN Controller - Introduction
ONOS SDN Controller - Introduction
 
OpenDaylight SDN Controller - Introduction
OpenDaylight SDN Controller - IntroductionOpenDaylight SDN Controller - Introduction
OpenDaylight SDN Controller - Introduction
 
Mininet Basics
Mininet BasicsMininet Basics
Mininet Basics
 
Android Programming Basics
Android Programming BasicsAndroid Programming Basics
Android Programming Basics
 
Cloud Computing: Overview and Examples
Cloud Computing: Overview and ExamplesCloud Computing: Overview and Examples
Cloud Computing: Overview and Examples
 
selected input/output - sensors and actuators
selected input/output - sensors and actuatorsselected input/output - sensors and actuators
selected input/output - sensors and actuators
 
Connected Things, IoT and 5G
Connected Things, IoT and 5GConnected Things, IoT and 5G
Connected Things, IoT and 5G
 
Connectivity for Local Sensors and Actuators Using nRF24L01+
Connectivity for Local Sensors and Actuators Using nRF24L01+Connectivity for Local Sensors and Actuators Using nRF24L01+
Connectivity for Local Sensors and Actuators Using nRF24L01+
 
NodeMCU with Blynk and Firebase
NodeMCU with Blynk and FirebaseNodeMCU with Blynk and Firebase
NodeMCU with Blynk and Firebase
 
Trends and Enablers - Connected Services and Cloud Computing
Trends and Enablers  - Connected Services and Cloud ComputingTrends and Enablers  - Connected Services and Cloud Computing
Trends and Enablers - Connected Services and Cloud Computing
 

Recently uploaded

办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
uehowe
 
Design Thinking NETFLIX using all techniques.pptx
Design Thinking NETFLIX using all techniques.pptxDesign Thinking NETFLIX using all techniques.pptx
Design Thinking NETFLIX using all techniques.pptx
saathvikreddy2003
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
ysasp1
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
Donato Onofri
 
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
bseovas
 
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalmanuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
wolfsoftcompanyco
 
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
uehowe
 
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
k4ncd0z
 
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
3a0sd7z3
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
3a0sd7z3
 
[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024
hackersuli
 
Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?
Paul Walk
 
Discover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to IndiaDiscover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to India
davidjhones387
 
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
uehowe
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
rtunex8r
 
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
xjq03c34
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
Laura Szabó
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
Toptal Tech
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
fovkoyb
 

Recently uploaded (19)

办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
办理毕业证(UPenn毕业证)宾夕法尼亚大学毕业证成绩单快速办理
 
Design Thinking NETFLIX using all techniques.pptx
Design Thinking NETFLIX using all techniques.pptxDesign Thinking NETFLIX using all techniques.pptx
Design Thinking NETFLIX using all techniques.pptx
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
 
HijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process HollowingHijackLoader Evolution: Interactive Process Hollowing
HijackLoader Evolution: Interactive Process Hollowing
 
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
 
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalmanuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
 
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
办理毕业证(NYU毕业证)纽约大学毕业证成绩单官方原版办理
 
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理一比一原版(USYD毕业证)悉尼大学毕业证如何办理
一比一原版(USYD毕业证)悉尼大学毕业证如何办理
 
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
快速办理(Vic毕业证书)惠灵顿维多利亚大学毕业证完成信一模一样
 
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
快速办理(新加坡SMU毕业证书)新加坡管理大学毕业证文凭证书一模一样
 
[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024
 
Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?Should Repositories Participate in the Fediverse?
Should Repositories Participate in the Fediverse?
 
Discover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to IndiaDiscover the benefits of outsourcing SEO to India
Discover the benefits of outsourcing SEO to India
 
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
留学挂科(UofM毕业证)明尼苏达大学毕业证成绩单复刻办理
 
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
怎么办理(umiami毕业证书)美国迈阿密大学毕业证文凭证书实拍图原版一模一样
 
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
办理新西兰奥克兰大学毕业证学位证书范本原版一模一样
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
 

Python Templating Engine - Intro to Jinja