python配置没问题,但为什么在地址栏输入localhost:8000/demo.py显示?

在CMD中输入python可以执行。CMD中在某一目录下输入python-mCGIHTTPServer也可以。但是在该目录中建立一个demo.py文件,文件中写入prin... 在CMD中输入python可以执行。
CMD中在某一目录下输入python -m CGIHTTPServer也可以。
但是在该目录中建立一个demo.py文件,文件中写入print("Hello!"),然后在浏览器中输入localhost:8000/demo.py没有显示。
在该目录中建立cgi-bin文件夹,然后将demo.py放入,地址栏输入localhost:8000/cgi-bin/demo.py依然没有显示。
展开
 我来答
Lcisware
2012-09-12 · TA获得超过619个赞
知道小有建树答主
回答量:846
采纳率:50%
帮助的人:343万
展开全部
因为localhost:8000/demo.py会执行如下几步操作:
1、首先要访问你本机的8000端口,连接到你的web服务器
2、然后告诉web服务器你要访问demo.py。

所以
1、如果你没有运行web服务器,或者web服务器没有监听在8000端口,那么上面的第一步就不通。
同时
2、如果你的demo.py没有放在web服务器根目录下,即使第一步通了也访问不到
3、即使访问到了,也只会把demo.py的原始内容显示到浏览器,而不会去执行你的python代码

你需要从头开始把web服务器的基本原理学习一下才可以继续下面的学习。
追问
谢谢你的回答。
CMD中输入F:\Test\python -m CGIHTTPServer已经运行了web服务器了,
而且当前目录Test文件夹就是服务器的根目录,demo.py也已经放入了,但是还是不行。。。
我做过php的网站,原理懂
第三点没看懂,为什么显示的是demo.py的原始内容而不会执行python代码。
kaisa1028
2012-09-12 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5429
采纳率:28%
帮助的人:2569万
展开全部
把你的demo.py改成:
print( "Content-Type: text/html")
print()
print ("Hello!")
"""
前两行是http response的header,必须要有,否则你的浏览器不知道怎么处理这个response。当然你可以在header里加上其他更详细的信息,但是那个空的print是必须有的,这个http response的格式要求,浏览器根据这个空行分出header和真正的content。
"""
更多追问追答
追问
照你说的试了,不行啊,浏览器里显示的是print ("Hello!")。。。 直接把源码显示出来了。。。
追答
我猜你可能是在localhost:8000/里有一个demo.py,在localhost:8000/cgi-bin/里有另一个demo.py,然后你访问的是localhost:8000/demo.py。CGIHTTPServer默认的cgi script是在cgi-bin里面,你要访问localhost:8000/cgi-bin/demo.py才行。
如果不是这种情况,那么你写一个类,继承CGIHTTPServer,在这个类里指定你的cgi脚本的目录。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式