python安装
在Windows下无论安装什么都是比较麻烦的,同样包括python。在Windows下安装python可以去python官网下载,在这里有一个下载版本的问题。现在可以分为两个大版本,即3.X之前和3.X之后。如果单纯是做python的开发(不会依赖其他第三方库),当然是选择3.x之后的版本。因为python的升级是不可阻挡的趋势,还不如早早选择新版本,省的以后再版本更换的时候出现额外的精力;但是如果是要和其他框架又耦合,那么建议是选择3.x之前的版本。在整个框架搭建过程中不致一次的出现因为版本不兼容导致莫名奇妙的问题出现,花费很长的时间去定位。比如开始python开始是3.4最新版本,但是webpy依赖的是python2.7的版本,无法正常安装(因为3.4和2.7之间有些语法不同)。
下载完之后就可以直接单击安装,选择安装目录就好。在这里需要注意的是安装完建议修改一下系统变量,这样以后可以在cmd里直接运行python命令就可以了,而不是每次都需要cd到存在python.exe的目录下再运行。除此之外,在安装其他第三方库的时候,比如webpy中会省去不少麻烦。除了上面直接下载可执行文件的方式安装之外,你还可以通过源码的方式安装,源码方式的安装可以通过--prefixe=filepath来指定安装路径。
修改系统路径办法:我的电脑->右键“属性”->选择“高级系统设置”->选择“环境变量”->选择“系统变量”->单击Path属性,把python.exe目录添加进去。如下图所示:
修改后的Path:C:\Program Files (x86)\Common Files\NetSarang;C:\Python27(注意每个路径之间使用分号隔开)
安装之后运行cmd,然后直接输入python进入python输入命令模式:
eclipse安装python插件
当python安装完成之后,还需要eclipse支持python的开发。这时候需要eclipse中添加pydev的插件。打开eclipse然后具体步骤如下:
help->install new software->在弹出的窗口中单击add->在弹出的窗口中输入下面截图内容
单击OK等待加载出的内容,在加载出的内容中选择pydev安装包,然后点击next开始安装,安装过程中询问关于权限相关内容直接选择同意。安装成功之后,eclipse选择重启。重启之后可以在Window->preference中看到PyDev的选项,下一步的工作就是为PyDev选择python解释器。在eclipse中安装解释器的步骤如下:
Window->preference->PyDev->Interpreters->Python Intepreter,具体如下图所示:
在出现的窗口中单击new,在弹出的窗口中选择你安装python的目录中含有python.exe目录,单击OK则开始加载python下的包。如下图所示:
这个时候,eclipse就可以进行python的开发了。其实上述不要忘记python interpreter的设置,其他正常情况下都不会出现问题的。经过上述步骤之后,在eclipse中新建项目就可以看到PyDev Project选项。按照正常的新建源代码,以python的方式运行,整个过程结束。
webpy安装
在安装的时候,有可能会报出如下错误 import error model utils not exist等类似错误。具体错误原因是因为上述命令会执行web文件夹下的__init__.py文件,其源码文件如下所示:
#!/usr/bin/env python
"""web.py: makes web apps (http://webpy.org)"""
from __future__ import generators
__version__ = "0.37"
__author__ = [
"Aaron Swartz <me@aaronsw.com>",
"Anand Chitipothu <anandology@gmail.com>"
]
__license__ = "public domain"
__contributors__ = "see http://webpy.org/changes"
import utils, db, net, wsgi, http, webapi, httpserver, debugerror
import template, form
import session
from utils import *
from db import *
from net import *
from wsgi import *
from http import *
from webapi import *
from httpserver import *
from debugerror import *
from application import *
from browser import *
try:
import webopenid as openid
except ImportError:
pass # requires openid module
可以看住该文件会加载标准库和web文件夹下的各种py文件执行一遍生成pyc文件以便以后可以主动执行。但是__init__.py在加载其他文件的时候,因为其他文件的不在当前python的目录下,可以通过import sys,然后打印sys.path,看一下当前python目录。解决办法是把当前的位置添加进sys.path,即在__init__.py源码文件中添加下面一句代码:
import sys
sys.path.append(yourpath)#yourpath则是你webpy所在的目录。
添加完这两句代码再次执行,就可以安装成功了。如果不添加上面的代码,你也可以通过修改Path路径在完成安装的。另外,如果上面你安装了python而且也修改了Path路径,那么这个问题就不会出现。
MySQLdb的安装
sqlalchemy的安装
代码示例
简单示例
import web
urls = (
'/(.*)', 'hello'
)
app = web.application(urls, globals())
class hello:
def GET(self, name):
if not name:
name = 'World'
return 'Hello, ' + name + '!'
if __name__ == "__main__":
app.run()
运行上述代码,默认监听的是8080端口。然后浏览器上输入localhost:8080,就可以看到网页上输出Hello world。你第一个webpy项目就这样成功了。
webpy中form表单
$def with(form) #第一行,第一列
<form method="POST">
$:form.render()
</form>
个人项目
该项目主要功能的是注册,登录。其中注册部分使用的是webpy的form模块,数据库层使用的orm框架sqlalchemy。通过DAOLayer把数据库接口层封装起来,对外提供友好接口;utils封装了常用的接口;Const负责读取数据库的配置信息。主要代码结构就是上述。
其中需要注意的是存放css/js的static文件夹,必须和启动类同一个层次目录,另外就是文件名必须为static,略蛋疼。
问题
- 版本问题主要出现在python与webpy、python与MySQLdb两部分。
- webpy不熟悉导致中form表单生成问题,代码示例中已经给出提示
- 读取配置文件的时候无法直接读取json或者dict格式,解决办法是参考了SO上的回答
- sqlalchemy不熟悉导致插入数据之后,数据库无数据的问题,原因是add之后没有commit
- form表单的生成一直异常,这个已经在上文中说明。生成语句必须在html中第一行表示
- 登录成功之后跳转失败,这是url之间的相对路径没搞好
- 页面之间的数据传值问题