Differences between revisions 1 and 21 (spanning 20 versions)
Revision 1 as of 2008-09-24 13:09:52
Size: 3162
Editor: HuangYi
Comment:
Revision 21 as of 2008-11-26 16:01:59
Size: 27
Editor: HuangYi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
== wsgiref ==

{{{#!python
import wsgiref
def hello_app(environ, start_response):
    start_response('200 OK', {})
    yield 'Hello world'
    for key, value in environ.items():
        yield '%s : %s' % (key, value)

server = wsgiref.make_server('localhost', 8000, hello_app)
server.serve_forever()
}}}

== mako ==

{{{#!python
from mako import Template
tmpl = Template('./simple.html')
print tmpl.render(data = {'a':1, 'b':2})
}}}

simple.html
{{{
<html>
  <head>
    <title>简单mako模板</title>
  </head>
  <body>
    <h5>Hello World!</h5>
    <ul>
      % for key, value in environ.items():
      <li>
        ${key} - ${value}
      <li>
      % endfor
    </ul>
  </body>
</html>
}}}

和 wsgiref 整合:

{{{#!python
import wsgiref
from mako import Template
def hello_app(environ, start_response):
    tmpl = Template('./simple.html')
    content = tmpl.render(data=environ)
    start_response('200 OK', {})
    return content

server = wsgiref.make_server('localhost', 8000, hello_app)
server.serve_forever()
}}}

== sqlalchemy ==

model.py
{{{#!python
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:///data.db')
Session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
Base = declarative_base()

class Dictionay(Base):
    __tablename__ = 't_dictionay'
    key = Column('key', String(255), primary_key=True)
    value = Column('value', String(255))

# 创建数据库
Base.metadata.create_all(engine)

session = Session()
for item in ['python','ruby','java']:
    dictionay = Dictionay(key=item, value=item.upper())
    session.add(dictionay)

session.commit()

for dictionay in session.query(Dictionary):
    print dictionay.name, dictionay.value
}}}

上面是个 demo,下面我们把它放到web应用中去。

model.py
{{{#!python
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:///data.db')
Session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
Base = declarative_base()

class Dictionay(Base):
    __tablename__ = 't_dictionay'
    key = Column('key', String(255), primary_key=True)
    value = Column('value', String(255))
}}}

create_db.py
{{{#!python
from model import Base, Session, Dictionary

# 创建数据库
Base.metadata.create_all(engine)

# 插入初始数据
session = Session()
for item in ['python','ruby','java']:
    dictionay = Dictionay(key=item, value=item.upper())
    session.add(dictionay)

session.commit()
}}}

和 wsgiref 整合
{{{#!python
import wsgiref
from mako import Template
from model import Session, Dictionary
def hello_app(environ, start_response):
    session = Session()
    dictionaries = session.Query(Dictionary)
    data = dict([(dictionary.name, dictionary.value) for dictionary in dictionaries])

    tmpl = Template('./simple.html')
    content = tmpl.render(data=data)

    start_response('200 OK', {})
    return content

server = wsgiref.make_server('localhost', 8000, hello_app)
server.serve_forever()
}}}
from webob import Request

from webob import Request

ObpLovelyPython/AbtWebModules (last edited 2009-12-25 07:15:55 by localhost)