python还未入门,求教一个python的问题

2010-09-03 08:46:51 +08:00
 iiduce
之前一直用C#,.net,最近转学python。昨晚写程序的时候遇到个问题不知怎么实现,向大家求教。

在.net(或VB)之类,都可以在页面中定义一个按钮,然后给按钮的click绑定服务器端事件。在python中应该怎样做类似的实现?

谢谢啦。
11153 次点击
所在节点    Python
58 条回复
iiduce
2010-09-03 16:53:36 +08:00
rveo
2010-09-03 19:57:43 +08:00
@iiduce 这位兄弟,我以 9 年的网站技术经验告诉你:在 website 里不让人知道是不可能的。
Paranoid
2010-09-03 20:15:35 +08:00
@iiduce 不让用户知道,如何让服务器知道呢? ( 没.net(或VB)经验,确实不大理解你的那个想法,噶)
est
2010-09-03 20:24:13 +08:00
@rveo .NET就是这样封装的。。。他们以为一个 runat='server' 客户端就看不到了。。。哈哈。。。逻辑都混杂写服务器了。
zaykl
2010-09-03 20:49:48 +08:00
杯具的事情总算再次遇到,同情楼主...你是自学编程的吧?
zaykl
2010-09-03 21:00:11 +08:00
曾经被人如此问倒...楼主加油.

VB真的害人不浅...

我还是为下一代着想 给出答案吧:
http://www.djangoproject.com/documentation/0.95/request_response/
chuangbo
2010-09-03 22:09:09 +08:00
强烈同情这些被M$毒害、对运行机理一窍不通的孩子。特别是在V2EX的地方看到他们。
楼主的问题和 python 与否没有一点关系。还是回去鼠标拖控件吧。
zaykl
2010-09-03 23:01:24 +08:00
其实 我是明白了 楼主的意思....


汗...
iiduce
2010-09-03 23:22:19 +08:00
oh 我来了。 好热闹,很高兴看到有这么多人讨论。
iiduce
2010-09-03 23:25:49 +08:00
几位朋友如是说:
rveo @iiduce 这位兄弟,我以 9 年的网站技术经验告诉你:在 website 里不让人知道是不可能的。

Paranoid @iiduce 不让用户知道,如何让服务器知道呢? ( 没.net(或VB)经验,确实不大理解你的那个想法,噶)

est @rveo .NET就是这样封装的。。。他们以为一个 runat='server' 客户端就看不到了。。。哈哈。。。逻辑都混杂写服务器了。


好吧,我用.net写了一个页面http://168.160.185.111:9999/test.aspx

点击页面中的按钮,页面会请求一个http url接口获取数据,并显示在页面上。

烦请告诉我,我请求的http url是什么,您是如何知道的。 感激不尽。
iiduce
2010-09-03 23:27:30 +08:00
@zaykl
差不多算是自学的吧,不过也工作好几年了,产品项目也一直在做,不过可能都流于皮毛了。
iiduce
2010-09-03 23:29:04 +08:00
@zaykl

http://www.djangoproject.com/documentation/0.95/request_response/ 您给的这个页面里面的内容以前看过,又看了一遍。没有发现如何解决。能给一点小小的提示么。
iiduce
2010-09-03 23:30:39 +08:00
@chuangbo
不管我懂多少,对你的回答内容表示同情,同时BS。
zaykl
2010-09-03 23:49:40 +08:00
@iiduce
其实就是等于你在服务器端访问另一个网站的内容,保存在本地服务器然后在show出来给browser端吧.
如果没有误解的话,在

来段简单的伪代码:
html:
<form action="/MainPage" method="post">
<input type="text" name="num" />
<input type="submit" />
</form>


python:
class MainPage(webapp.RequestHandler):
def post(self):
num = self.request.get("num")
url='http://www.v2ex.com/' +num
content=urllib2.open(url).read()
self.response.out.write(content)
zaykl
2010-09-03 23:54:49 +08:00
@iiduce 希望楼主不要介意,因为你的基础知识真的不敢恭维...但是难得有这样的毅力自学已经是蛮难得的.楼主加油,自己也是从菜鸟被鄙视出来的...
iiduce
2010-09-03 23:57:44 +08:00
@zaykl
谢谢你的答案。

我确实是一时没有转过弯来。也想过这样的方案:请求自己网站的页面,然后用自己网站页面去请求另一个地址,但是这样自己网站的页面就成了一个代理接口了,没有什么意义。

你的例子中使用了post提交,因为浏览器post请求不能跨域的限制,也就解决了我的问题。


虽然受到好多人BS,不过学到了。 谢谢。
rveo
2010-09-04 00:19:38 +08:00
@iiduce OK,我最闲,我来抓刀通俗(非专业)地说说 B/S 原理先。

B/S = 浏览器端(Browser,也叫客户端)/ 服务器端(Server)结构。

当用户使用浏览器在网页上操作(链接,表单,脚本事件)时,浏览器会发送一个请求(GET/POST,仅有此2种方式)到服务器端,服务器端接到请求后,调取相应的程序,执行处理,然后生成浏览器端能识别的数据,返回给浏览器,如此完成一个请求。这个数据包括:文本,图片,流媒体等等。而能在浏览器上构成网页的,目前只有HTML这个文本性质的网页脚本(什么xml,wml,也都是文本性质的)。HTML 的作用就是告诉浏览器,我要显示些什么东西。(CSS是告诉浏览器怎么显示,javascript是辅助性客户端程序脚本。)

好了,这就是一个大概,与 C/S 端最大的不同就是:HTML是公开的,因为要给所有网页浏览器识别,而不是封装的,他相当于是可移植的,你用任何网页浏览器都能打开。

而楼主你的问题也就在这里了。其实你在C/S端请求时,也是类似的过程,只是,你是封装的。

网页中,你任何操作都是公开的,不借助javascript,你只能链接和发送表单。在网站的世界里,数据除了GET和POST,还可以借助cookies传输,但操作请求的只能是一个网址,而且只能GET或POST。
iiduce
2010-09-04 00:28:13 +08:00
@rveo
谢谢普及知识。

B/S = 浏览器端(Browser,也叫客户端)/ 服务器端(Server)结构。

您说的公开是指浏览器端公开,服务器端代码对用户是隐藏的。

服务器端语言写的B/S程序:客户端请求——服务器端处理并生成或改造html——返回html

您说的C/S模式好像与我们的问题没有什么关系。
sogood
2010-09-04 00:29:03 +08:00
这个必须mark...
rveo
2010-09-04 00:34:18 +08:00
@iiduce 额,我对C/S了解不深,或许我对C/S的说法是有异议的。不管他。

“您说的公开是指浏览器端公开,服务器端代码对用户是隐藏的。 ” 嗯,是。

在 B/S 里,所有的触发事件都需要最终转化为GET/POST请求。否则无法跟服务器沟通。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/2253

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX