Skip to content

raise exception if variable is not defined in context for a template #307

@EmadHelmi

Description

@EmadHelmi

say this is my template file:

<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 }}.</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 }}
      <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>

and in this simple code I want to render the template

tpl, err := pongo2.FromFile("sample.tpl")
if err != nil {
		log.Fatal(err)
	}
ctx := pongo2.Context{}

In a way I want to get an error if the defined context does not match the variables in the template or get used variable names in the template. How can I do this?

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions