can anybody help me. 
I am new to phyton and just try it today.
i am trying to write a simple program from the example from the web but it 
doesnt work
first it gave error
   "Could not initialize images API; you are likely missing the Python 
"PIL" module. ImportError: No module named PIL"  
then i search the web and i found out i need to install PIL after i install 
PIL it still doent work. my log says 
 

2013-08-23 14:20:04 Running command: "['C:\\Python27\\pythonw.exe', 
'C:\\Program Files\\Google\\google_appengine\\dev_appserver.py', 
'--skip_sdk_update_check=yes', '--port=8080', '--admin_port=8000', 
u'C:\\Python27\\guestbook']"

INFO 2013-08-23 14:20:07,052 devappserver2.py:557] Skipping SDK update 
check.

INFO 2013-08-23 14:20:07,203 api_server.py:138] Starting API server at: 
http://localhost:57693

INFO 2013-08-23 14:20:07,209 dispatcher.py:164] Starting module "default" 
running at: http://localhost:8080

INFO 2013-08-23 14:20:07,213 admin_server.py:117] Starting admin server at: 
http://localhost:8000

INFO 2013-08-23 14:20:29,290 module.py:593] default: "GET / HTTP/1.1" 200 12

INFO 2013-08-23 14:20:29,361 module.py:593] default: "GET /favicon.ico 
HTTP/1.1" 404 154

i attached 2 files.

 

can anybody help me please

 

thanks

 
 

-- 
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/groups/opt_out.
import cgi
import urllib

from google.appengine.api import users

from google.appengine.ext import ndb


import webapp2


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):
        self.response.write('<html><body>')
        guestbook_name = self.request.get('guestbook_name',
                                          DEFAULT_GUESTBOOK_NAME)

        # Ancestor Queries, as shown here, are strongly consistent with the High
        # Replication Datastore. Queries that span entity groups are eventually
        # consistent. If we omitted the ancestor from this query there would be
        # a slight chance that Greeting that had just been written would not
        # show up in a query.

        greetings_query = Greeting.query(
            ancestor=guestbook_key(guestbook_name)).order(-Greeting.date)
        greetings = greetings_query.fetch(10)


        for greeting in greetings:
            if greeting.author:
                self.response.write(
                    '<b>%s</b> wrote:' % greeting.author.nickname())
            else:
                self.response.write('An anonymous person wrote:')
            self.response.write('<blockquote>%s</blockquote>' %
                                cgi.escape(greeting.content))

            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'

            # Write the submission form and the footer of the page
            sign_query_params = urllib.urlencode({'guestbook_name': 
guestbook_name})
            self.response.write(MAIN_PAGE_FOOTER_TEMPLATE %
                                (sign_query_params, cgi.escape(guestbook_name),
                                 url, url_linktext))




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)
application: your-app-id
version: 1
runtime: python27
api_version: 1
threadsafe: true
  
handlers:
- url: /.*
  script: guestbook.application

libraries:
- name: webapp2
  version: latest

Reply via email to