Search code examples
djangogoogle-app-enginewebapp2

How can I access items within a ndb query object clientside?


I'm working with appengine, django and webapp2 and am sending a query object clientside such that

{{ exercise_steps }}

returns

Query(kind='ExStep')

and

{{ exercise_steps.count }}

returns 4

I'm trying to chuck the variable exercise_steps into some javascript code and need to iterate through the items in a javascript (not a django) loop but I cannot seem to access the items.

I've tried {{ exercise_steps|0 }}, {{ exercise_steps[0] }}, {{ exercise_steps.0 }} but it returns nothing. I know I can do this with a django loop but is there a way I can access the objects within the query with a javascript loop using something like

for (var i = 0; i < {{exercise_steps.count}}; i++) {
    console.log({{ exercise_steps.i.location }})
}

Solution

  • You can't mix client side code and template code... by the time the javascript runs, your python code is already executed. You are not sending a python object to the javascript - it's executed when the HTML is generated.

    You need to recreate array in JS, or have an ajax call return an array from python.

    var steps = [
        {% for step in exercise_steps %}
             {{ step.location }}{% if not forloop.last %},{% endif %}
        {% endfor %}]; // now your python iterable is a JS array.