Google app engineのスクリプト


from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.api import users
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext.webapp import template
import os,datetime

class data(db.Model):
 id=db.IntegerProperty(default=0)
 title=db.StringProperty()
 author=db.UserProperty()
 content=db.StringProperty(multiline=True)
 create_time=db.DateTimeProperty()

class mainpage(webapp.RequestHandler): 
 def get(self):
  article=data.all().order('-create_time').fetch(10)
  user=users.get_current_user()
  if user:
   url=users.create_logout_url('/')
   dis="welcome %s <a href=%s >logout</a>" %(user,url)
  else:
   url=users.create_login_url('/')
   dis="<a href=%s >login</a>" % url
  values={'article':article,'dis':dis,'user':user}
  self.response.out.write(template.render('index.html',values))
  
class add_article(webapp.RequestHandler):
 def post(self):
  tem=data()
  title=self.request.get('title')
  content=self.request.get('content')
  author=users.get_current_user()
  if title and content and author:
   tem.id=tem.all().count()+1
   tem.title=title
   tem.author=author
   tem.content=content
   tem.create_time=datetime.datetime.now()
   tem.put()
   self.response.out.write('save succeful !!!<a href="/">home</a>')
  else:
   self.response.out.write('something error')
   
class to_add(webapp.RequestHandler):
  def get(self):
   user=users.get_current_user()
   self.response.out.write(template.render('add.html',{'user':user}))
   
class article_manage(webapp.RequestHandler):
 def get(self):
   user=users.get_current_user()
   articles=data.all().order('-create_time').fetch(10)
   value={'user':user,'articles':articles}
   self.response.out.write(template.render('manage.html',value))

class detail(webapp.RequestHandler):
 def get(self,a):
  dd=int(a)
  tem=db.GqlQuery('select * from data where id=:1' ,dd)[0]
  user=users.get_current_user()
  value={'tem':tem,'user':user}
  self.response.out.write(template.render('detail.html',value))
  
class del_article(webapp.RequestHandler):
 def get(self,a):
  dd=int(a)
  tem=db.GqlQuery('select * from data where id=:1' ,dd)[0]
  user=users.get_current_user()
  if user and tem:
   tem.delete()
  self.redirect('/manage/')

class edit_article(webapp.RequestHandler):
 def get(self,a):
  dd=int(a)
  tem=db.GqlQuery('select * from data where id=:1' ,dd)[0]
  user=users.get_current_user()
  value={'tem':tem,'user':user}
  self.response.out.write(template.render('edit.html',value))
  
class save_article(webapp.RequestHandler):
 def post(self,a):
  dd=int(a)
  tem=db.GqlQuery('select * from data where id=:1' ,dd)[0]
  title=self.request.get('title')
  content=self.request.get('content')
  author=users.get_current_user()
  if title and content and author:
   tem.title=title
   tem.author=author
   tem.content=content
   tem.create_time=datetime.datetime.now()
   tem.put()
   self.response.out.write('save succeful !!!<a href="/">home</a>')
  else:
   self.response.out.write('something error')
application = webapp.WSGIApplication( 
                                     [('/', mainpage), 
									  ('/add/',to_add),
                                      ('/sign/',add_article),
									  ('/manage/',article_manage),
									  ('/n%3D(.*)',detail),
									  ('/manage/del/n%3D(.*)',del_article),
									  ('/manage/edit/n%3D(.*)',edit_article),
									  ('/manage/save/n%3D(.*)',save_article),
									  ], 
                                     debug=True) 
def main(): 
  run_wsgi_app(application) 
if __name__ == "__main__": 
  main()
  
  
index.html:
<style>a{text-decoration:none}</style>
{{ dis }}
{%  if user %}
<a href='/add/' >    </a>
<a href='/manage/'>     </a>
{% endif %}
<br>
<br>
{% if article %}
{% for i in article %}
<div>title:{{i.title}}</div>
<div>author:{{i.author}}</div>
<div>create time: {{ i.create_time }}</div>
<pre>{{i.content}}</pre>
{% endfor %}
{% else %}
      
{% endif %}
manage.html:
<style>a{text-decoration:none}</style>
{{ n}}
{% if user %}
welcome {{user}}
<a href='/' >  </a>
<a href='/add/' >    </a>
<a href='/manage/'>     </a>
<br>
{% if articles %}
{% for i in articles %}
<a href="/n={{ i.id }}"  >{{ i.title }}</a>
<a href="/manage/del/n={{ i.id }}">  </a>
<a href="/manage/edit/n={{ i.id }}">  </a>
<br>
{% endfor %}
{% else %}
      <br>
{% endif %}
{% else %}
please login first !!!<a href='/'>home</a>
{% endif %}
detail.html:
<style>a{text-decoration:none}</style>
{{ n }}
{% if user %}
<div>welcome {{user}}</div>
<a href='/'>   </a>
<a href='/add/' >     </a>
<a href='/manage/'>     </a>
{% endif %}
{% if tem %}
<div>title:{{ tem.title }}</div>
<div>author:{{ tem.author }}</div>
<div>create_time{{ tem.create_time }}</div>
<pre>{{ tem.content }}</pre>
{% else %}
       
{% endif %}
edit.html:
<style>a{text-decoration:none}</style>
{%if user %}
welcome {{ user }}
<a href='/'>  </a><br>
<form action='/manage/save/n={{ tem.id }}' method='post'>
<div>title:<input type='text' name='title' value="{{ tem.title }}"></div>
<div><textarea name='content' rows="30" cols="100" >{{ tem.content }}</textarea></div>
<input type='submit' value='edit article'>
</form>
{% else %}
you have to login to write aritle <a href='/'>home</a>
{% endif %}
add.html:
{%if user %}
welcome {{ user }} <a href='/'>  </a><br>
<form action='/sign/' method='post'>
<div>title:<input type='text' name='title'></div>
<div><textarea name='content' rows="30" cols="100" ></textarea></div>
<input type='submit' value='add article'>
</form>
{% else %}
you have to login to write aritle <a href='/'>home</a>
{% endif %}
app.yaml:
application: oncyberspace
version: 1
runtime: python 
api_version: 1

handlers:
- url: .*
  script: cms.py
         ,    ,  ,    。        :http://oncyberspace.appspot.com