Golang html/template versus Python Jinja2 (3) - Arrays and Slices





Go html/template versue Python Jinja2 - Arrays and Slices
Go html/template Python Jinja2

template:

{{range $link := .}}
<a href="{{$link.Href}}">{{$link.Name}}</a>
{{end}}

template:

{% for link in links %}
<a href="{{link.href}}">{{link.name}}</a>
{% endfor %}

template values:

type Link struct {
       Name    string
       Href    string
}

// arrays
var la [2]Link
la[0] = Link{"Google", "https://www.google.com/"}
la[1] = Link{"Facebook", "https://www.facebook.com/"}

// slices
var ls []Link
ls = append(ls, Link{"Google", "https://www.google.com/"})
ls = append(ls, Link{"Facebook", "https://www.facebook.com/"})

template values:

links = [
  {'name': 'Google', 'href': 'https://www.google.com'},
  {'name': 'Facebook', 'href': 'https://www.facebook.com'}
]

Complete Go html/template source code:

html-template-example-2.go | repository | view raw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package main

import (
	"html/template"
	"os"
)

const tmpl = `
{{range $link := .}}
<a href="{{$link.Href}}">{{$link.Name}}</a>
{{end}}
`

type Link struct {
	Name	string
	Href	string
}

func main() {
	// arrays
	var la [2]Link
	la[0] = Link{"Google", "https://www.google.com/"}
	la[1] = Link{"Facebook", "https://www.facebook.com/"}
	t, _ := template.New("foo").Parse(tmpl)
	t.Execute(os.Stdout, la)

	// slices
	var ls []Link
	ls = append(ls, Link{"Google", "https://www.google.com/"})
	ls = append(ls, Link{"Facebook", "https://www.facebook.com/"})
	t.Execute(os.Stdout, ls)
}

Complete Python Jinja2 source code:

jinja2-example-2.py | repository | view raw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python
# -*- coding:utf-8 -*-

from jinja2 import Template
import sys

tmpl = """
{% for link in links %}
<a href="{{link.href}}">{{link.name}}</a>
{% endfor %}
"""

if __name__ == '__main__':
  links = [
    {'name': 'Google', 'href': 'https://www.google.com'},
    {'name': 'Facebook', 'href': 'https://www.facebook.com'}
  ]
  t = Template(tmpl)
  sys.stdout.write(t.render(links=links))

Tested on: Ubuntu Linux 14.10, Go 1.4, Python 2.7.8, Jinja2 2.7.3


Golang html/template versus Python Jinja2 series:

[1]Golang html/template versus Python Jinja2 (1)
[2]Golang html/template versus Python Jinja2 (2)
[3]Golang html/template versus Python Jinja2 (3) - Arrays and Slices
[4]Golang html/template versus Python Jinja2 (4) - Arrays and Slices Index
[5]Golang html/template versus Python Jinja2 (5) - Maps and Dictionaries
[6]Golang html/template versus Python Jinja2 (6) - Template Inheritance (Extends)
[7]Golang html/template versus Python Jinja2 (7) - Custom Functions and Filters