2013年2月27日水曜日

[XAMPP]XAMPP + Python for Windows

現在 mod_python は not active developemtn となっている (2011/05/19)
mod_python の代替として mod_wsgi がある modwsgi - Python WSGI adapter module for Apache
  1. Mod_python Apache/Python Integration から Windows 用 mod_python (mod_python-3.3.1.win32-py2.5-Apache2.2.exe) をダウンロードする
  2. ダウンロードしたファイルをインストールする
  3. Apache の設定 (xampp/apache/conf/httpd.conf) を変更する
    LoadModule python_module modules/mod_python.so
    ScriptAlias /python/ "D:/htdocs/python/"
    <Directory "D:/htdocs/python">
        AddHandler mod_python .py
        PythonHandler mod_python.publisher
        PythonDebug On
    </Directory>
      
  4. 動作確認
    Example: py_test.html
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <html>
        <head>
            <title>Python CGI</title>
            <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8">
        </head>
    
        <body>
            <h1>Python CGI</h1>
            <pre>test</pre>
            <form action="python/test00.py/test" method="GET">
                <input type="submit"/>
            </form>
    
            <pre>test2</pre>
            <form action="python/test00.py/test2" method="GET">
                <input type="submit"/>
            </form>
        </body>
    </html>
    
    Example: python/test00.py
    def test(req):
        req.content_type = 'text/plain'
        req.write("Hello World!")
        return
    
    def test2(req):
        ans = 4 * 2
        req.content_type = 'text/plain'
        msg = "ANS = %d" % ans
        req.write(msg)
        return
    
  5. 引数を取る場合
    Example 3. py_test01.html
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
        <head>
            <title>Python CGI 2</title>
            <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8"/>
        </head>
    
        <body>
            <form action="python/test01.py/test" method="GET">
                <select name="year">
                    <option value="2010">2010 年</option>
                </select>
                <select name="month">
                    <option value="4">4 月</value>
                    <option value="5">5 月</value>
                    <option value="6">6 月</value>
                </select>
                <input type="submit" id="sumbitButton" value="Submit"/>
            </form>
        </body>
    </html>
    
    Example: python/test01.py
    # -*- coding: utf-8 -*-
    def test(req, year, month):
        s = """
    <html>
        <body>
            Year = %s<BR>
            Month = %s<BR>
        </body>
    </html>
    """ % (year, month)
        return s
    

0 件のコメント:

コメントを投稿