我正在使用龙卷风,python编写一个小型Web应用程序,下面是我的代码。我在python中有一个带有2个文本字段的html表单,现在我想将输入表单作为文本字段并存储在redis中。
我的问题 -
示例代码将不胜感激。
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8888, help="run on the given port", type=int)
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write('<html><body><form action="/" method="post">'
'<p>Please enter the Key Value pair for redis.</p>'
'<input type="text" **name="key"** value="type key here">'
'<input type="text" **name="value"** value="type value here">'
'<input type="submit" value="Submit Key Value">'
'</form></body></html>')
def main():
tornado.options.parse_command_line()
application = tornado.web.Application([
(r"/", MainHandler),
])
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
答案 0 :(得分:3)
对于第一个问题,使用python的redis模块。
首先,从redis
安装sudo easy_install redis
或从source code获取安装脚本
py-redis的github page上有文档,但如果你想从简单的东西开始,只需写下这两行代码:
import redis
# if your redis was implemented properly and defaultly (eg. on 6379 port),
# `db` you get can work now.
db = redis.StrictRedis()
对于第二个问题,请在MainHandler
上编写HTTP POST处理方法:
class MainHandler(tornado.web.RequestHandler):
def get(self):
...
def post(self):
# use handler's get_argument method to get incoming data,
# if eithor of them is not get, a HTTP 400 will return
key = self.get_argument('key')
value = self.get_argument('value')
# just like `SET` command in redis client
db.set(key, value)
# return something you want
self.write('Set %s - %s pair OK' % (key, value))
PS。您可以先将db
设置为处理程序类的属性,以便可以从self.db
轻松获取。