2014-12-09 2 views
0

newbee 여기! 나는 CGI 개념을 이해하려고 노력하고, 샘플 코드 아래에 쓴 오전 : 파이썬 CGI 경로 혼란

#!/usr/bin/python 
import cgi 
import SimpleHTTPServer 
import SocketServer 

class cgiweb (SimpleHTTPServer.SimpleHTTPRequestHandler): 
     def do_GET(self): 
       print "Content-Type: text/html" 
       print 
       print 'Hello World' 

server=SocketServer.TCPServer(("",8022),cgiweb) 
server.serve_forever() 

이 cgiwebserver.py 스크립트로 저장. 이제 주소를 통해 브라우저의 스크립트에 액세스하려고합니다.

localhost:8022 

해당 없음! 터미널에 (핸들러에서) 모든 명령문을 인쇄합니다.

정확한 경로를 입력하고 있습니까? 아니요, 그렇다면 이유가 무엇입니까? 올바른 경로는 무엇입니까?

+0

"CGI를 이해하려고합니다"는 2014 년에는 유용하지 않습니다. WSGI를 배우거나 더 나은 Python 웹 프레임 워크를 배우십시오. ! –

답변

0

사용 SimpleHTTPRequestHandler은 CGI를 프로그래밍하지 않습니다.

import SimpleHTTPServer 
import SocketServer 

class cgiweb(SimpleHTTPServer.SimpleHTTPRequestHandler): 
    def do_GET(self): 
     self.send_response(200) 
     self.send_header('Content-Type', 'text/html') 
     self.end_headers() 
     self.wfile.write('Hello World') 

server = SocketServer.TCPServer(("",8022),cgiweb) 
server.serve_forever() 

CGI 프로그래밍을 수행하려면 CGIHTTPServer module이 필요합니다. CGI 프로그램 (HTTP 헤더와 본문을 표준 출력에 인쇄)을 분리 된 파일에 넣어야합니다.

+0

'코드'#/usr/bin/python 부분을 수입 CGIHTTPServer 수입 SocketServer 클래스 cgiw (CGIHTTPServer.CGIHTTPRequestHandler) : 데프 do_GET (자기) : 인쇄 "의 Content-Type : text/html과" 인쇄 인쇄 'Hello World' server = SocketServer.TCPServer (("", 8021), cgiw) server.serve_forever() '코드' 이 경우에도 작동하지 않습니다. @falsetru –

+0

@MuhammadSuleman, 주석, 특히 파이썬 코드에서 코드를 읽는 것은 어렵습니다. – falsetru

+0

@MuhammadSuleman, 답안의 코드에'print' 문이 없습니다. 그들은 어디에서 왔는가? 대답에서 코드를 그대로 사용 했습니까? – falsetru