windows下使用webpy搭建本地服务器的历程
首先是我刚开始对webpy什么都不了解,后来通过一早上学习它,后来我成功搭建了webpy了。我主要是通过webpy官网提供的教程来的,具体可以看官网http://webpy.org/,这里写一些心得,其实webpy是一种简洁的网络应用框架,其部署还是要通过apache和nginx等Web服务器软件来实施的。下面是我的历程:
这里申明我的环境和成果:python2.7,使用mongodb,同时使用python官方提供中的pymongo提供的api。
1.安装python,这里我用的是python2.7,首先是下载python安装包,下载完后双击安装,安装的时候记得自己的安装python的安装路径,我的是安装在D:\Python27中
2.然后配置环境变量,右键我的电脑,点击属性,点击高级系统配置,然后点击环境变量,在系统变量那一栏里面找到Path,然后双击。
3.然后就是添加你刚刚安装python的路径了,我的是D:\Python,添加的时候记得记得路劲后面带;,不然的话会成功。
4.然后就打开cmd了,windows的终端,查看python是安装成功,出现下图就安装python成功了。
5.然后就是安装python的包管理工具pip,这里是具体安装方法:http://www.360doc.com/content/14/1017/08/10724725_417590569.shtml,至于里面的get-pip.py的链接打不开,可以到python官网下载get-pip.py。
6.然后就是安装pymongo在windows的终端下输入pip install pymongo。
7.然后先安装mongo。这里是具体安装方法:http://www.cnblogs.com/lecaf/archive/2013/08/23/mongodb.html
8.然后就可以开始我们的搭建本地服务器的之旅了,首先是我根据webpy官网和网上的一些资料写出自己服务器端的代码:
server.py:
#-*-encoding: utf-8-*- import web import json import model # http://localhost:1234/news?module=2&start=504&num=1 urls = ( '/users', 'Users', '/query', 'Query', '/add1', 'AddForOwner', '/add2', 'AddForDebate' ) class Users: def POST(self): datafrom = web.data() userid = "" loop = len(datafrom) - 1 result = "" while loop > 0: if datafrom[loop] is '=': break userid += datafrom[loop] loop -= 1 result_id = 0 result = model.userid_get(userid) return result class Query: #form的类型是一个代表查询的类型0:代表用户,1:代表已回答,2:代表未回答,另一个是代表一些必要的信息:和前一种有的关联是:0:userid,1:0,代表没有意义,2:0,代表没有意义 def POST(self): datafrom = web.data() count = 0 loop = 0 type1 = "" id1 = "" while loop < len(datafrom): if datafrom[loop] is '=' or datafrom[loop] is '&': count += 1 if count is 1: type1 += datafrom[loop] if count is 3: id1 += datafrom[loop] loop += 1 result = model.queryForUser(type1, id1) return result class AddForOwner: def POST(self): datafrom = web.data() count = 0 loop = 0 userid = "" paixing = "" paicontent = "" zhanpucontent = "" while loop < len(datafrom): if datafrom[loop] is '=' or datafrom[loop] is '&': count += 1 if datafrom[loop] is '=': loop += 1 if count is 1: userid += datafrom[loop] if count is 3: paixing += datafrom[loop] if count is 5: paicontent += datafrom[loop] if count is 7: zhanpucontent += datafrom[loop] loop += 1 model.addInOwner(userid, paixing, paicontent, zhanpucontent) class AddForDebate: def POST(self): datafrom = web.data() count = 0 loop = 0 userid = "" resultid = "" content = "" while loop < len(datafrom): if datafrom[loop] is '=' or datafrom[loop] is '&': count += 1 if datafrom[loop] is '=': loop += 1 if count is 1: userid += datafrom[loop] if count is 3: resultid += datafrom[loop] if count is 5: content += datafrom[loop] loop += 1 model.addInOther(userid, resultid, content) app = web.application(urls, globals()) if __name__ == '__main__': app.run()
model.py(数据库操作的地方):
import web, datetime, time import pymongo import random from pymongo import MongoClient conn = pymongo.MongoClient('localhost', 27017) if conn: print "Successly Connect database!" db = conn['Tiantainzhanpu'] def userid_get(isRegistered): result = "" if isRegistered is "1": randnum = random.randint(10000,10000000) total = db.user.find().count() + 1 print total total = total + randnum db.user.insert_one({"userid": str(total)}) result = str(total) return result def queryForUser(type1, id1): if type1 is "0": userid = id1 db.taolun.find({"userid": userid}) return resultForUser elif type1 is "1": resultForUser = db.taolun.find({"status": "1"}) return resultForUser else: resultForUser = db.taolun.find({"status": "0"}) return resultForUser def resultid_get(resultid): result = db.content.find({"resultid": resultid}) return result def addInOwner(userid, paixing, paicontent, zhanpucontent): numbers = db.taolun.find({}).count() numbers = numbers + 1 db.taolun.insert_one({"resultid": str(numbers), "userid": userid, "type": paixing, "paicontent": paicontent, "zhanpucontent":zhanpucontent, "status": "0", "count": "0", "time":time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))}) def addInOther(userid, resultid, content): db.taolun.update_one({"resultid": resultid}, {'$set': {"status": "1"}}) taoluncount = db.content.find({"resultid": resultid}).count() inctaoluncount = taoluncount + 1 db.taolun.update({"resultid": resultid}, {'$set': {"count": str(inctaoluncount)}}) db.content.insert_one({"resultid": resultid, "userid": userid, "content": content, "time":time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))})
这里讲解几点:1.安装webpy模块:这里是安装的具体方法:http://blog.chinaunix.net/uid-21633169-id-4239409.html,安装完之后就可以import web了,
2.然后就是webpy中读取的post当中的内容只是一串字符串,还要我们自己解析的。这里是它官网的介绍:http://webpy.org/cookbook/postbasic
3.之后的就没有什么问题了,可以观看webpy提供的在线教程来就可以了。这里附上网址:http://webpy.org/src/