Skip to content
forked from flosch/pongo2

[DEPRECATED] The latest release of pongo2(v4). Contains the fixes listing in this iris-contrib repository too (finally).

License

Notifications You must be signed in to change notification settings

iris-contrib/pongo2

This branch is 1 commit ahead of, 85 commits behind flosch/pongo2:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0738cc4 · Dec 12, 2019
Dec 12, 2019
Dec 12, 2019
Dec 25, 2018
Dec 25, 2018
May 5, 2019
Dec 25, 2018
Dec 12, 2019
Dec 12, 2019
Dec 12, 2019
Dec 12, 2019
Feb 12, 2017
Dec 12, 2019
Dec 12, 2019
Dec 12, 2019
Jul 28, 2014
Dec 12, 2019
Dec 12, 2014
Dec 12, 2019
Dec 12, 2014
Jun 2, 2017
Dec 12, 2019
Apr 12, 2018
Aug 9, 2018
May 23, 2015
Dec 12, 2019
Dec 12, 2019
Dec 12, 2019
Mar 9, 2015
Feb 12, 2017
Feb 19, 2016
Jun 26, 2017
Mar 9, 2015
Mar 9, 2015
Mar 9, 2015
Jul 23, 2015
May 23, 2015
Mar 9, 2015
Mar 9, 2015
Jun 12, 2015
May 23, 2015
Mar 9, 2015
Dec 12, 2019
Feb 12, 2017
Mar 9, 2015
Dec 12, 2014
Mar 9, 2015
Jan 24, 2017
Mar 9, 2015
Mar 9, 2015
Mar 9, 2015
Dec 12, 2019
Dec 12, 2019
Dec 12, 2019
Dec 12, 2019
Dec 12, 2019

Repository files navigation

GoDoc Build Status

pongo2 is the django template syntax for Iris.

First impression of a template

<html><head><title>Our admins and users</title></head>
{# This is a short example to give you a quick overview of pongo2's syntax. #}

{% macro user_details(user, is_admin=false) %}
	<div class="user_item">
		<!-- Let's indicate a user's good karma -->
		<h2 {% if (user.karma >= 40) || (user.karma > calc_avg_karma(userlist)+5) %}
			class="karma-good"{% endif %}>
			
			<!-- This will call user.String() automatically if available: -->
			{{ user }}
		</h2>

		<!-- Will print a human-readable time duration like "3 weeks ago" -->
		<p>This user registered {{ user.register_date|naturaltime }}.</p>
		
		<!-- Let's allow the users to write down their biography using markdown;
		     we will only show the first 15 words as a preview -->
		<p>The user's biography:</p>
		<p>{{ user.biography|markdown|truncatewords_html:15 }}
			<a href="/user/{{ user.id }}/">read more</a></p>
		
		{% if is_admin %}<p>This user is an admin!</p>{% endif %}
	</div>
{% endmacro %}

<body>
	<!-- Make use of the macro defined above to avoid repetitive HTML code
	     since we want to use the same code for admins AND members -->
	
	<h1>Our admins</h1>
	{% for admin in adminlist %}
		{{ user_details(admin, true) }}
	{% endfor %}
	
	<h1>Our members</h1>
	{% for user in userlist %}
		{{ user_details(user) }}
	{% endfor %}
</body>
</html>

Documentation

For a documentation on how the templating language works you can head over to the Django documentation. pongo2 aims to be compatible with it.

You can access pongo2's API documentation on godoc.

Caveats

Filters

  • date / time: The date and time filter are taking the Golang specific time- and date-format (not Django's one) currently. Take a look on the format here.
  • stringformat: stringformat does not take Python's string format syntax as a parameter, instead it takes Go's. Essentially {{ 3.14|stringformat:"pi is %.2f" }} is fmt.Sprintf("pi is %.2f", 3.14).
  • escape / force_escape: Unlike Django's behaviour, the escape-filter is applied immediately. Therefore there is no need for a force_escape-filter yet.

Tags

  • for: All the forloop fields (like forloop.counter) are written with a capital letter at the beginning. For example, the counter can be accessed by forloop.Counter and the parentloop by forloop.Parentloop.
  • now: takes Go's time format (see date and time-filter).

Misc

  • not in-operator: You can check whether a map/struct/string contains a key/field/substring by using the in-operator (or the negation of it): {% if key in map %}Key is in map{% else %}Key not in map{% endif %} or {% if !(key in map) %}Key is NOT in map{% else %}Key is in map{% endif %}.

Add-ons, libraries and helpers

Official

  • pongo2-addons - Official additional filters/tags for pongo2 (for example a markdown-filter). They are in their own repository because they're relying on 3rd-party-libraries.

API-usage examples

Please see the documentation for a full list of provided API methods.

Please refer to kataras/iris/_examples/view

Contributors

This project exists thanks to all the people who contribute.

About

[DEPRECATED] The latest release of pongo2(v4). Contains the fixes listing in this iris-contrib repository too (finally).

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 87.6%
  • Smarty 12.3%
  • HTML 0.1%