from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from util.sessions import Session
class MainPage(webapp.RequestHandler):
def get(self):
session = Session()
if 'words' in session:
words = session['words']
else:
words = 'no words'
self.response.out.write('<html><body>')
self.response.out.write('<form action="/" method="post" enctype="multipart/form-data">')
self.response.out.write('Upload File: <input type="file" name="txt"><br>')
self.response.out.write('<input type="submit" name="submit" value="Submit">')
self.response.out.write(str(words))
self.response.out.write('</form>')
self.response.out.write('</body></html>')
class Study(webapp.RequestHanlder):
def post(self):
words = self.request.get('txt')
self.response.out.write(words)
application = webapp.WSGIApplication([('/', MainPage)],
('/study', Study)
], debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
2009년 12월 31일 목요일
구글 앱 엔진, 텍스트 파일 열기
2009년 12월 30일 수요일
python에서 html에서 읽어온 string 한글 검색
# -*- coding: utf-8 -*-
import urllib
import re
class MyOpener(urllib.FancyURLopener):
version = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11'
def Translate(eng):
urllib._urlopener = MyOpener()
f = urllib.urlopen('http://www.google.co.kr/dictionary?langpair=en|ko&q='+eng+'&hl=ko&aq=f')
html = f.read()
str = unicode('영어 > 한국어','euc-kr').encode('utf-8')
pos_ko = html.find(str)
str = unicode('영어 사전','euc-kr').encode('utf-8')
pos_en = html.find(str, pos_ko)
if __name__ == '__main__':
Translate('TEST')
2009년 12월 29일 화요일
Hello WebApp 분석
webapp
어플리케이션은 세가지 파트로 구성되어있다:
- 요구를 처리하고 반응하는 하나 혹은 그 이상의
RequestHandler
클래스 - URL 기반의 핸들러로 들어온 요구를 라우트하는
WSGIApplication
인스턴스 - CGI adaptor를 사용하여
WSGIApplication을 실행하는 메인 루틴
webapp
어플리케이션에 어울리게 기존의 helloworld.py 를 수정하여 다음과 같이 다시 코딩해보자:
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
class MainPage(webapp.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('Hello, webapp World!')
application = webapp.WSGIApplication(
[('/', MainPage)],
debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
run_wsgi_app(application)
Runs a WSGI application in App Engine's CGI environment. This is comparable to using a WSGI-to-CGI adaptor such as the one provided by the wsgiref
module of the Python standard library, but has several advantages: run_wsgi_app() automatically detects whether the application is running in the development server, and if so outputs errors to the browser in addition to the log. run_wsgi_app() also allows App Engine to send data output by the handler prior to the error, which wsgiref.handlers.CGIHandler
doesn't do.
Arguments:
- application
- A WSGI application object, such as webapp.WSGIApplication.
The WSGIApplication Class
The google.appengine.ext.webapp
package provides the following classes:
- class WSGIApplication(url_mapping, debug=False)
A WSGI-compatible application that maps URL paths to RequestHandler classes. An App Engine CGI script creates a WSGIApplication object, then runs it using a WSGI CGI handler such as run_wsgi_app().
Arguments:
- url_mapping
- A mapping of URL paths to request handlers, as a list of tuples where each tuple is a path-to-handler mapping. The first element of the tuple specifies the URL path as a string. The second element of the tuple is the constructor of a request handler class, a subclass of RequestHandler.
- debug
- If
True
, the application runs in "debug mode." Primarily, this means that the request handler's handle_exception() method is called with debug_mode=True
when the handler raises an exception, which prints debugging information to the web browser.
출처
- http://code.google.com/appengine/docs/python/gettingstarted/usingwebapp.html
- http://code.google.com/appengine/docs/python/tools/webapp/utilmodule.html#run_wsgi_app
- http://code.google.com/appengine/docs/python/tools/webapp/wsgiapplicationclass.html