菜鸟学web.py--拾遗

来源:互联网 发布:simotion编程 编辑:程序博客网 时间:2024/06/16 20:52
1.所有的模板只能共享一个HTML标签,如<HTML>的,在其他地方不能有任何关于HTML信息之类的东西,如头文件,<HTML>,<BODY>之类的,否则出错,其它模板文件也一样


2.模板注释一定要写在末尾,至少要在def with后面,否则会有莫名其妙的错误!不管什么情况,def with必须在第一行!

        
3.用mod_wsgi运行web.py时,要指明模板路径,否则显示错误:raise AttributeError, "No template named " + name
AttributeError: No template named index
解决:template_root = os.path.join(os.path.dirname('D:/pythonStudy/WebpyStudy/projects/blogs/'), 'templates')
render = web.template.render(os.path.abspath(os.path.dirname('D:/pythonStudy/WebpyStudy/projects/blogs'))+'/templates/', base = 'base', globals=t_globals)#这里要标明全局变量!!!

4.在web.py用到datestr:
t_globals = {
    'datestr':web.datestr
}
运行打开http://localhost:8080/显示Invalid format string
错误显示datestr ValueError: Invalid format string
这时需要重新建表,即要把数据库之前创建的那个表先删除,再重新建立,我用Pycharm,换了一个主题(从Default改成monokai),跟这个有关

5.t_globals = dict(
    datestr = web.datestr,
    static = '/static',#必须在这里加上这一行,才可以在index.html中显示static文件夹下的东西,如图片,调用时可这样:<img src="$static/webpy.png" alt="webpy"/>
)

6.自定义404错误
def notfound():
    return web.notfound('噢,没有找到!')
app.notfound= notfound

7.路径可用正则表达式匹配
大部分时候简单的正则可以适用你的常规应用了,数字用 (\d+),字符串用 (.*),注意不要漏写
像/,/help,/item/(\d+)(\d+将匹配数字),后面是接受请求的类名称

8.GET函数用于请求网页文本,还有POST函数,经常被用在提交form,如提交一个去做什么事情的请求时,就用POST
GET的URL可以被搜索引擎索引,并通过搜索引擎访问,虽然大部分页面你希望被索引,但是少数类似订单处理的页面是不希望被索引的

9.问题:在浏览器显示500错误,查Apache的log显示"ImportError: No module named model"
解决:在顶部加上这一行就行,注意import model要放在后面,同样的方法可以解决"No module named web"的方法(感谢CPyUG的Ken同学,还有别的问题可至:http://webpy.org/install)
abspath = os.path.dirname("D:/pythonStudy/WebpyStudy/projects/blogs/")
sys.path.append(abspath)
os.chdir(abspath)
import model
原创粉丝点击