Python网络编程基础(5)续——mod_python.doc

mod_python

19 mod_python

1.    测试

test.py

修改配置文件,添加如下内容

        <Directory /var/www/foundations/>

                Options Indexes FollowSymLinks MultiViews

                AllowOverride AuthConfig

                Order allow,deny

                allow from all

 

                AddHandler mod_python .py

                PythonHandler test

                PythonDebug On

        </Directory>

这个配置方法和书上的不太一样,在测试的时候url也是localhost/foundation/test.py。在使用浏览器浏览的时候,test.pyhandler函数会自动地被调用。

2.    分派请求

dispatcher.py根据req.uri来确定要调用的模块。为了测试,首先需要再次修改配置文件:

                AddHandler mod_python .py

                PythonHandler dispather

                PythonDebug On

由于配置和书上不同,除了url要以.py为结尾之外,还要将dispatcher.pygethandlername的正则"/([a-zA-Z0-9_-]+)/.prog($|/|/?)"修改为"/([a-zA-Z0-9_-]+)/.py($|/|/?)"。完成修改之后访问localhost/foundation/test.py,测试正常。不过当访问不存在的module的时候,程序中传递给404的字符串并不会显示出来,看来只是给日志用的。

3.    处理输入

pathinfo.pyget.pypost.py都是处理输入的例子,只不过分别采用不同的方法:pathinfo.py分析urlget.py使用get方法;post.py构造表单,采用post方法提交。在getpost的例子中都用到了mod_python. util. FieldStorage,例如:

form = util.FieldStorage(req)

之后就可以使用form.getfirst('month')来访问getpost提交的数据了。

4.    转义

escape.py介绍了提交数据和现实数据时的转义。关键的两句是:

                   urllib.quote_plus(form.getfirst('data')),

                   cgi.escape(form.getfirst('data'))))

其中quote_plus进行的实际是HTML实体的转移,用于展示内容的时候使用。而escape则是进行的是URL的转移,例如空格等等不能直接出现在网址中的符号。

 

以上例子在不修改Apache配置文件的情况下(采用dispacther处理),可以直接访问文件名测试。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值