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/

 

posted @ 2015-05-14 08:36  =zhou  阅读(887)  评论(0编辑  收藏  举报