まず、「cgi」と「wsgi」は全く別物です。
(でも、wsgiでcgiモジュールは使えるのですが、まぁそれはややっこしくなるのでおいといて)
あなたが作りたいのは、「cgi」ですか?mod_wsgiで動かす「wsgi」ですか?
「cgi」を作りたいのであれば、apacheも「CGIの設定」をして下さい。mod_wsgiは関係ありません。
「wsgi」であれば、WSGIの作り方を勉強して下さい。
もちろん、ここで語れるほど簡単ではありませんので、とりあえず「python wsgi」でググれば、参考になるサイトはたくさん出てきますので、そちらをご覧ください。
一応、サンプルを一つ載せておきます。
python
1 # coding: utf-8
2 # application.py
3
4 import cgi
5
6 def make_index_page ( ) :
7 return '''
8 <html>
9 <body>
10 <form action="./q" method="POST">
11 <input name="answer" type="text" /><br />
12 <button type="submit">Push</button>
13 </form>
14 '''
15
16 def make_answer_page ( environ ) :
17 if environ [ 'REQUEST_METHOD' ] == 'POST' :
18 form = cgi . FieldStorage ( fp = environ [ 'wsgi.input' ] , environ = environ , keep_blank_values = True )
19 else :
20 form = cgi . FieldStorage ( environ = environ , keep_blank_values = True )
21 html = '''
22 <html>
23 <head>
24 <meta charset="utf-8">
25 </head>
26 <body>
27 <p>あなたが入力したのは、「{answer}」です。</p>
28 </body>
29 </html>
30 '''
31 return html . format ( answer = form [ 'answer' ] . value )
32
33 def application ( environ , start_response ) :
34 if environ [ 'PATH_INFO' ] == '/q' :
35 html = make_answer_page ( environ )
36 else :
37 html = make_index_page ( )
38 start_response ( '200 OK' , [ ( 'Content-Type' , 'text/html' ) ] )
39 return [ html . encode ( 'utf-8' ) ]
40
41 if __name__ == '__main__' :
42 from wsgiref import simple_server
43 with simple_server . make_server ( 'localhost' , 5000 , application ) as server :
44 server . serve_forever ( )
45
まぁでも、wsgiを作るのであれば、せめてflaskなどのフレームワークを使った方がいいと思います。
(自分も、素のwsgiスクリプトを書いたのは久しぶりで、忘れてしまってた)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/08 13:49
2020/10/08 14:31