免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3471 | 回复: 4
打印 上一主题 下一主题

再求助,webpy的代码在wsgi中改如何修改? [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2015-06-20 22:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-02-04 09:39 |只看该作者 |倒序浏览
webpy初学,有问题不明白,请教各位牛人,感激中....

在使用python code.py调试环境中一切正常的webpy应用,换到apache+wsgi环境中就出错,
该如何修改?

code.py代码如下,编码格式为utf-8 ,是一个典型的使用模板的hello world.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import web

urls = (
        '/(.*)', 'hello'
)

app = web.application(urls, globals())

class hello:
        def GET(self, name):
                render = web.template.render('tpl/')
                return render.hello(name)

if __name__ == "__main__":
        app.run()

#application = web.application(urls, globals()).wsgifunc()               


模板的 hello.html

$def with (name)
$if name:
    你好阿, $name.
$else:
    你好,世界.

用 python  code.py 启动调试web服务,一切正常。换到apache+wsgi环境中就报错,加下最下面一行
application = web.application(urls, globals()).wsgifunc()     
也不行,出现错误提示:internal server error。




安装配置好的apache,运行下面的code.py正常,

apache的配置:

LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias  /            "D:/wwwroot/webpy/code.py"
Alias            /static      "D:/wwwroot/webpy/static/"
AddType          text/html    .py

<Directory "D:/wwwroot/webpy">
      Order deny,allow
      Allow from all
</Directory>

code.py重新写过,hello word,没有使用模板。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import web

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

class hello:
      def GET(self):
          return 'Hello word!'

application = web.application(urls, globals()).wsgifunc()


在浏览中输入,http://127.0.0.1/hello apche和wsgi提供的服务一切正常。



请问各位老师,webpy+wsgi中使用模板的话,该怎么写最后的语句才对呢?
感激不尽!


论坛徽章:
0
2 [报告]
发表于 2013-02-04 16:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2015-06-20 22:20:00
3 [报告]
发表于 2013-02-05 09:04 |只看该作者
谢谢thinkc的提醒,原因已经找到。
apache错误日志如下:
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1] Traceback (most recent call last):
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-packages\\web\\application.py", line 239, in process
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]     return self.handle()
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-packages\\web\\application.py", line 230, in handle
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]     return self._delegate(fn, self.fvars, args)
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-packages\\web\\application.py", line 420, in _delegate
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]     return handle_class(cls)
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-packages\\web\\application.py", line 396, in handle_class
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]     return tocall(*args)
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]   File "D:/wwwroot/webpy/code.py", line 15, in GET
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]     return render.hello(name)
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-packages\\web\\template.py", line 1017, in __getattr__
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]     t = self._template(name)
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-packages\\web\\template.py", line 1011, in _template
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]     self._cache[name] = self._load_template(name)
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-packages\\web\\template.py", line 1001, in _load_template
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]     raise AttributeError, "No template named " + name
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1] AttributeError: No template named hello
[Tue Feb 05 08:57:58 2013] [error] [client 127.0.0.1]

意思是模板文件没有找到,修改了code.py如下,问题基本解决。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import web

urls = (
        '/(.*)', 'hello'
)

app = web.application(urls, globals())

class hello:
        def GET(self, name):
                render = web.template.render('D:/wwwroot/webpy/templates/')    #使用绝对路径,相对路径该怎么用呢?
                return render.hello(name)

if __name__ == "__main__":
        app.run()

application = web.application(urls, globals()).wsgifunc()               


下一步切换到linux环境下一试。

论坛徽章:
0
4 [报告]
发表于 2013-02-05 09:25 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2015-06-20 22:20:00
5 [报告]
发表于 2013-02-05 11:24 |只看该作者
再次感谢thinkc,问题圆满解决,linux下的实验也很成功。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP