初学web.py有几个疑问想请教

8 views
Skip to first unread message

Michael Liao

unread,
Dec 29, 2009, 12:24:40 AM12/29/09
to python-cn`CPyUG`华蟒用户组(中文Py用户组)
以前一直用java,现在开始研究py,所以想从最简单的web.py开始入手,写页面确实很容易,不过有几个疑问,希望请教py高手

render = web.template.render('template/')
app = web.application(urls, globals())

一个HTTP请求肯定对应一个线程来处理,那是不是一个HTTP请求都会生成app和render实例呢?还是所有请求共享一个app和render实
例?

web.ctx我想应该是绑定到线程的把?不过不清楚url分发是在哪处理的,我找了web.py的源码,功力不够,没找到

先谢过!另有一堆wave邀请,需要的请留下邮箱。

Ken

unread,
Dec 29, 2009, 7:53:23 AM12/29/09
to pyth...@googlegroups.com
# settings.py

render = web.template.render('template/')

# product.py
import settings
render = settings.render

class View:
    def GET(self):
        product = ...
        return render.product.view(product)


--
大郎:百才招聘(baicai.com).产品部
Email: k...@baicai.com
Gtalk: qicha...@gmail.com
twitter.com/qichangxing
http://blog.hi0791.com

吼吼

unread,
Dec 30, 2009, 12:30:41 AM12/30/09
to pyth...@googlegroups.com
我也有类似的疑问。
另外globals()和locals()的区别是什么。

2009/12/29 Ken <qicha...@gmail.com>

--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp



--
沈超(吼吼、OHSC)
http://www.imchao.net

limodou

unread,
Dec 30, 2009, 12:39:57 AM12/30/09
to pyth...@googlegroups.com
2009/12/30 吼吼 <she...@gmail.com>:
> 我也有类似的疑问。
> 另外globals()和locals()的区别是什么。

globals()是模块级别的变量都在里面。而locals要看作用域,如果是在模块级别,则和globals()是一样的。如果是函数则是函数中定义的变量。

--
I like python!
UliPad <<The Python Editor>>: http://code.google.com/p/ulipad/
UliWeb <<simple web framework>>: http://uliwebproject.appspot.com
My Blog: http://hi.baidu.com/limodou

吼吼

unread,
Dec 30, 2009, 2:51:02 AM12/30/09
to pyth...@googlegroups.com
webpy是怎样共享全局的数据的?
我在官网找了半天没找到。

2009/12/30 limodou <lim...@gmail.com>
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

limodou

unread,
Dec 30, 2009, 3:02:14 AM12/30/09
to pyth...@googlegroups.com
2009/12/30 吼吼 <she...@gmail.com>:
> webpy是怎样共享全局的数据的?
> 我在官网找了半天没找到。
>

我没学过webpy,回答不了你的问题。不过不外乎:配置文件,公共模块,数据库。到底是什么级别的还要看需求。

Ken

unread,
Dec 30, 2009, 3:12:08 AM12/30/09
to pyth...@googlegroups.com
2009/12/30 吼吼 <she...@gmail.com>
webpy是怎样共享全局的数据的?

我二楼举的例子,以及下面这个算不算?

# settings.py
img_size_small = 200, 150

# product.py
import settings

def img_upload(...):
    #save small file
    from PIL import Image
    im = Image.open(firsthand_file_path)
    im.thumbnail(settings.img_size_small, Image.ANTIALIAS)
    ...

还有下面这个例子:

web.template.Template.globals['render'] = render

可以在模板中使用 render 对象

吼吼

unread,
Dec 30, 2009, 3:40:36 AM12/30/09
to pyth...@googlegroups.com
哦,学习了,谢谢!

我现在还有个问题。
我在__init__.py
放了
session = web.session.Session(app, web.session.DiskStore('sessions'), initializer={        'count': 0})

我想在
app/con.py
里面取到count

webpy的资料好少,我现在对数据的共享已经糊涂了。哪位大侠能帮我整理一下:
1.同一个request之间的数据传递
2.同一个会话之间的数据传递
3.不同会话之间的数据传递

 
2009/12/30 Ken <qicha...@gmail.com>
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

limodou

unread,
Dec 30, 2009, 3:48:07 AM12/30/09
to pyth...@googlegroups.com
2009/12/30 吼吼 <she...@gmail.com>:

> 哦,学习了,谢谢!
> 我现在还有个问题。
> 我在__init__.py
> 放了
>>
>> session = web.session.Session(app, web.session.DiskStore('sessions'),
>> initializer={ 'count': 0})
>
> 我想在
> app/con.py
> 里面取到count
> webpy的资料好少,我现在对数据的共享已经糊涂了。哪位大侠能帮我整理一下:
> 1.同一个request之间的数据传递
> 2.同一个会话之间的数据传递
> 3.不同会话之间的数据传递
>

这些问题倒是不全是web.py的问题,应该是大多数框架共有的问题吧:

1. 问题不清楚。request是一个对象,怎么还有request之间的说法?
2. 会话之间一般放在session中,session可以放文件、内存或数据库中,甚至专门的session服务器。用什么模式要看场合和需求。
3. 不同会话是不是意味着跨进程或线程,可以放在配置文件,不过可能比较静态,比较好的可以放在cache或数据库中。不过一般这种问题都是有专门的表来存储,比如应用的参数等。

吼吼

unread,
Dec 30, 2009, 3:59:40 AM12/30/09
to pyth...@googlegroups.com
1.我是指同一个request,不同的应用。比如我先让a.py处理,然后让b.py处理,可以这样吗?
2.这个主要是想知道在__init__.py声明好了session后,在con.py怎么调用。
3.全局的话,我主要想知道它有没有这样的功能。比如我要一个临时计数器,统计有多少个人访问过。但是我又不想用数据库。

2009/12/30 limodou <lim...@gmail.com>
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp

limodou

unread,
Dec 30, 2009, 4:13:56 AM12/30/09
to pyth...@googlegroups.com
2009/12/30 吼吼 <she...@gmail.com>:

> 1.我是指同一个request,不同的应用。比如我先让a.py处理,然后让b.py处理,可以这样吗?

你要考虑两个不同的模块或函数是如何互相调用的。可以把request作为参数进行传递。

> 2.这个主要是想知道在__init__.py声明好了session后,在con.py怎么调用。

这个要问web.py的专家了。

> 3.全局的话,我主要想知道它有没有这样的功能。比如我要一个临时计数器,统计有多少个人访问过。但是我又不想用数据库。
>

其实就是一个共享的数据信息。可以使用cache,还可以使用memcache。单机比较简单,集群的话可能就要考虑象memcache这类的网络访问的方式了。

Ken

unread,
Dec 30, 2009, 6:17:27 AM12/30/09
to pyth...@googlegroups.com
2009/12/30 吼吼 <she...@gmail.com>

3.全局的话,我主要想知道它有没有这样的功能。比如我要一个临时计数器,统计有多少个人访问过。但是我又不想用数据库。

web.py 的 session 有数据库和文件两种。
参考:http://webpy.org/cookbook/sessions
Reply all
Reply to author
Forward
0 new messages