使用web.py 做后台开发+bootstrap 感觉能做出比较好的效果,今天就尝试一下。
1.web.py的基本使用和bootstrap的配置
(小僧使用的ubuntu)
bootstrap: http://getbootstrap.com/getting-started/
具体安装bootstrap包可以借助bower :http://bower.io/
遇到的问题:
1.写好的代码执行后,web.py提示招不到js文件 图片等问题?主要是路径问题
搞了半天,原来是当时没注意web.py对静态文件的访问控制。
看了http://webpy.org/cookbook/staticfiles.zh-cn
另外 ./ 代表当前目录 ; ../ 代表上一级目录 ,一次类推。。
2. <type 'exceptions.IndexError'> at /login
already passed 0
在web.py教程里看到db.select()的结果可以当dicitonary来用,
得知db.select()返回web.utils.IterBetter,看代码注释中说可以用做迭代器,不能往回迭代(cannot go backwards)
http://lost-theory.org/webpydocs/web/utils.py.html?f=311&l=348#311
这两段代码错误就是因为第一次for迭代到最后一个元素,不能返回到第一个元素迭代了
于是将IterBetter的所有元素添加到list当中:
users = []
user_temp = db.select('users')
for user in users_temp:
users.append(user)宁
3.Peer authentication failed for user "postgres"
postgresql 认证的问题,如果安装上之后不做一以下修改,回报上述错误。
修改之后就不用每次执行python code,py 后都需要su postgres,不然切换到postgres用户下,存在文件访问权限的问题。
解决办法如下:
1. 运行下面的命令编辑pg_hba.conf文件
sudo gedit/etc/postgresql/9.1/main/pg_hba.conf
2. 将# Database administrative login by Unix domain socket
local all postgres peer
改为
# Database administrative login by Unix domain socket
local all postgres trust
3. 保存后执行下面的命令重新加载配置文件
sudo/etc/init.d/postgresql reload
4. 数据库操作的时候 WHERE id=<built-in function id>
db.delete('entries', where = 'id = $id', vars = locals())
Because id is a build in function, so you have to define it in vars:
涉及到id=‘id’的情况,需要加入 vars=locals() ,因为id在python里有id() 函数。
4.javascript里面使用python的注意事项:
web.py中,js里面本来就有$符号,如果script中有$符号,会出现语法错误,所以最好是将js代码放到js文件中使用。
另外在js中同样可以使用$var的形式使用python变量。