Lists and Items‎ > ‎

Step 11: Item Form Pathway

< Previous Step Conclusion >


There is a form in the template for creating items. There is a method in the CreateItem handler for handling HTTP POST, and creating an item.


I'll need to GET an Item form, making sure it has the list key. Again, CreateItem.get, unchanged:

class CreateItem(webapp.RequestHandler):
  def get(self, list_key):
     template_values = {
        'item_form': 1,
        'list_key': list_key
     }
     self.response.out.write(render(template_values))


... and its matching template section:

{% if item_form %}
  {% ifequal list.key list_key %}
    <a name="form"></a>
    <form action="/create_item/" method="post">
      <span style="padding-left:15px">
         <textarea style="background:#eeee00" name="name" 
               rows=1 cols=33>
         </textarea><br>
      </span>
      <span style="padding-left:15px"> 
         <input type="Submit" name="button" value="Create item">
      </span>
      <span style="padding-left:130px">
         <a href="/">cancel</a>
      </span>
      <br>
      <input type="hidden" name="list_key" 
                               value="{{ list_key }}">
    </form>
  {% else %}
    <br>
    <span style="padding-left:15px">
       <a href="/item_form/{{ list.key }}/#form">
            Create an item
       </a>
    </span>
    <br><br>
  {% endifequal %}
{% else %}


We'll instantiate Items in the CreateItem.post handler:

  def post(self):
    item = Item()

    item.list_key = self.request.get('list_key') 
    item.name = self.request.get('name')
    item.put()

    self.redirect("/")