Vinny, I am using the app.yaml with the libraries added, made the changes MainPage handler changes to guestbook.py, and created the HTML index file as outlined in the tutorial but, no luck.
Thanks for your help I appreciate the reply! On Wednesday, March 26, 2014 2:06:19 AM UTC-4, Vinny P wrote: > > On Mon, Mar 24, 2014 at 8:25 PM, Dan Sprague <[email protected]<javascript:> > > wrote: > >> I am walking through the Google Application Engine Python tutorial for >> building a guestbook and have it a snag. I am following the instrcutions in >> the using templates section of the process and I can't seem to overcome >> this simple name issue: NameError: name 'guestbook_name' is not defined. >> >> Here is the error message from Google Application Launcher: >> >> File "/Users/spragued/Desktop/guestbook/guestbook.py", line 56, in >> MainPage >> >> ancestor=guestbook_key(guestbook_name)).order(-Greeting.date) >> >> NameError: name 'guestbook_name' is not defined >> >> INFO 2014-03-24 00:05:36,343 module.py:621] default: "GET >> /?guestbook_name=default_guestbook HTTP/1.1" 500 - >> >> > > Is your application loading in the template files that are part of the > tutorial? The template files are important because they assign the value of > *guestbook_name*. Make sure you've added in all the files listed in > https://developers.google.com/appengine/docs/python/gettingstartedpython27/templates. > > > > ----------------- > -Vinny P > Technology & Media Advisor > Chicago, IL > > App Engine Code Samples: http://www.learntogoogleit.com > > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/google-appengine. For more options, visit https://groups.google.com/d/optout.{% autoescape true %} {% for greeting in greetings %} {% if greeting.author %} {{ greeting.author.nickname() }} wrote: {% else %} An anonymous person wrote: {% endif %}
{{ greeting.content }}{% endfor %}
Guestbook name: {{ url_linktext }} {% endautoescape %}
app.yaml
Description: Binary data
import os
import urllib
from google.appengine.api import users
from google.appengine.ext import ndb
import jinja2
import webapp2
JINJA_ENVIRONMENT = jinja2.Environment(
loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
extensions=['jinja2.ext.autoescape'],
autoescape=True)
MAIN_PAGE_FOOTER_TEMPLATE = """\
<form action="/sign?%s" method="post">
<div><textarea name="content" rows="3" cols="60"></textarea></div>
<div><input type="submit" value="Sign Guestbook"></div>
</form>
<hr>
<form>Guestbook name:
<input value="%s" name="guestbook_name">
<input type="submit" value="switch">
</form>
<a href="%s">%s</a>
</body>
</html>
"""
DEFAULT_GUESTBOOK_NAME = 'default_guestbook'
# We set a parent key on the 'Greetings' to ensure that they are all in the same
# entity group. Queries across the single entity group will be consistent.
# However, the write rate should be limited to ~1/second.
def guestbook_key(guestbook_name=DEFAULT_GUESTBOOK_NAME):
"""Constructs a Datastore key for a Guestbook entity with guestbook_name."""
return ndb.Key('Guestbook', guestbook_name)
class Greeting(ndb.Model):
"""Models an individual Guestbook entry with author, content, and date."""
author = ndb.UserProperty()
content = ndb.StringProperty(indexed=False)
date = ndb.DateTimeProperty(auto_now_add=True)
class MainPage(webapp2.RequestHandler):
def get(self):
guestbook_name = self.request.get('guestbook_name',
DEFAULT_GUESTBOOK_NAME)
greetings_query = Greeting.query(
ancestor=guestbook_key(guestbook_name)).order(-Greeting.date)
greetings = greetings_query.fetch(10)
if users.get_current_user():
url = users.create_logout_url(self.request.uri)
url_linktext = 'Logout'
else:
url = users.create_login_url(self.request.uri)
url_linktext = 'Login'
template_values = {
'greetings': greetings,
'guestbook_name': urllib.quote_plus(guestbook_name),
'url': url,
'url_linktext': url_linktext,
}
template = JINJA_ENVIRONMENT.get_template('index.html')
self.response.write(template.render(template_values))
class Guestbook(webapp2.RequestHandler):
def post(self):
# We set the same parent key on the 'Greeting' to ensure each Greeting
# is in the same entity group. Queries across the single entity group
# will be consistent. However, the write rate to a single entity group
# should be limited to ~1/second.
guestbook_name = self.request.get('guestbook_name',
DEFAULT_GUESTBOOK_NAME)
greeting = Greeting(parent=guestbook_key(guestbook_name))
if users.get_current_user():
greeting.author = users.get_current_user()
greeting.content = self.request.get('content')
greeting.put()
query_params = {'guestbook_name': guestbook_name}
self.redirect('/?' + urllib.urlencode(query_params))
application = webapp2.WSGIApplication([
('/', MainPage),
('/sign', Guestbook),
], debug=True)
