The PONGO2 Templating Plugin
-
Pongo2 templates may be identified by a
shebang
on the first line (preferred method) or changing the file extension to home.pongo2.html. By default the operation of revel assumes just a.html
extension for controller responses so it would make more sense to use the shebang -
Pongo2 templates can be set to be case sensitive by setting
pongo2.tempate.caseinsensitive=false
, default is not case sensitive. If case sensitivity is off the templates are compiled using lower case -
Currently the only functions built in are as follows:
- field
- radio
- option
- url
- checkbox
- append
Samples implementation below
pongo2 is the successor of pongo, a Django-syntax like templating-language.
Install/update using go get
(no dependencies required by pongo2):
go get -u github.com/flosch/pongo2
Please use the issue tracker if you're encountering any problems with pongo2 or if you need help with implementing tags or filters (create a ticket!). If possible, please use playground to create a short test case on what's wrong and include the link to the snippet in your issue.
New: Try pongo2 out in the pongo2 playground.
{%append "moreStyles" "ui-lightness/jquery-ui-1.7.2.custom.css"%}
{%append "moreScripts" "js/jquery-ui-1.7.2.custom.min.js"%}
{% include "header.html" %}
<h1>Book hotel</h1>
<form method="POST" action="{%url "Hotels.Book" hotel.HotelId%}">
<p>
<strong>Name:</strong> {{hotel.Name}}
</p>
<p>
<strong>Address:</strong> {{hotel.Address}}
</p>
<p>
<strong>City:</strong> {{hotel.City}}
</p>
<p>
<strong>State:</strong> {{hotel.State}}
</p>
<p>
<strong>Zip:</strong> {{hotel.Zip}}
</p>
<p>
<strong>Country:</strong> {{hotel.Country}}
</p>
<p>
<strong>Nightly rate:</strong> {{hotel.Price}}
</p>
{%with field = "booking.CheckInDate"|field %}
<p class="{{field.ErrorClass}}">
<strong>Check In Date:</strong>
<input type="text" size="10" name="{{field.Name}}" class="datepicker" value="{{field.Flash}}">
* <span class="error">{{field.Error}}</span>
</p>
{% endwith %}
{%with field = "booking.CheckOutDate"|field %}
<p class="{{field.ErrorClass}}">
<strong>Check Out Date:</strong>
<input type="text" size="10" name="{{field.Name}}" class="datepicker" value="{{field.Flash}}">
* <span class="error">{{field.Error}}</span>
</p>
{% endwith %}
<p>
<strong>Room preference:</strong>
{%with field = "booking.Beds"|field %}
<select name="{{field.Name}}">
{%option field "1" "One king-size bed"%}
{%option field "2" "Two double beds"%}
{%option field "3" "Three beds"%}
</select>
{% endwith %}
</p>
<p>
<strong>Smoking preference:</strong>
{%with field = "booking.Smoking"|field %}
{%radio field "true"%} Smoking
{%radio field "false"%} Non smoking
{% endwith %}
</p>
{%with field = "booking.CardNumber"|field %}
<p class="{{field.ErrorClass}}">
<strong>Credit Card #:</strong>
<input type="text" name="{{field.Name}}" size="16" value="{{field.Flash}}">
* <span class="error">{{field.Error}}</span>
</p>
{% endwith %}
{%with field = "booking.NameOnCard"|field %}
<p class="{{field.ErrorClass}}">
<strong>Credit Card Name:</strong>
<input type="text" name="{{field.Name}}" size="16" value="{{field.Flash}}">
* <span class="error">{{field.Error}}</span>
</p>
{% endwith %}
<p>
<strong>Credit Card Expiry:</strong>
{%with field = "booking.CardExpMonth"|field %}
<select name="{{field.Name}}">
{%option field "1" "Jan"%}
{%option field "2" "Feb"%}
{%option field "3" "Mar"%}
{%option field "4" "Apr"%}
{%option field "5" "May"%}
{%option field "6" "Jun"%}
{%option field "7" "Jul"%}
{%option field "8" "Aug"%}
{%option field "9" "Sep"%}
{%option field "10" "Oct"%}
{%option field "11" "Nov"%}
{%option field "12" "Dec"%}
</select>
{% endwith %}
{%with field = "booking.CardExpYear"|field %}
<select name="{{field.Name}}">
{%option field "2008" "2008"%}
{%option field "2009" "2009"%}
{%option field "2010" "2010"%}
{%option field "2011" "2011"%}
{%option field "2012" "2012"%}
</select>
{% endwith %}
</p>
<p class="buttons">
<input type="submit" value="Proceed">
<a href="{%url "Hotels.Show" hotel.HotelId %}">Cancel</a>
</p>
</form>
<script type="text/javascript" charset="utf-8">
$(function() {
$(".datepicker").datepicker({dateFormat: 'yy-mm-dd'});
});
</script>
{% include "footer.html" %}
``