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/

浙公网安备 33010602011771号