2014-03-25 4 views
0

파이썬 CGI 스크립트에서 HTML을 생성하면 나태!하지만이 빈 페이지를 IE의 소스 코드로 열고 txt (html) 파일을 복사 한 다음 IE에서 엽니 다. 생성 된 코드가 정상인 경우 왜 이런 일이 일어 났는지 이해할 수 없습니다! 누구든지 제발 고칠 수 있을까요, 안할 수 있습니까? 내 파이썬 스크립트 : 빈 생성 페이지에서파이썬 cgi 스크립트가 제대로 작동하지 않습니다

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

import cgi 

def select_graph_view(): 
    print "Content-Type: text/html\n" 

    print '<html>' 
    print'<head>' 
    print('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">') 
    print('<title>Highcharts Example</title>') 
    print '<script type="text/javascript" src="d:\slider\web_server3\cgi-bin\js_css\jquery-1.11.0.min.js"></script>' 
    print'<script type="text/javascript">' 
    print'$(function() {' 
    print'$' + '('+"'#container').highcharts({" 
    print'  title: {' 
    print"   text: 'Monthly Average Temperature'," 
    print'   x: -20 //center' 
    print'  },' 
    print'  subtitle: {' 
    print"   text: 'Source: WorldClimate.com'," 
    print'   x: -20' 
    print'  },' 
    print'  xAxis: {' 
    print"   categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'," 
    print"    'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']" 
    print'  },' 
    print'  yAxis: {' 
    print'   title: {' 
    print"    text: 'Temperature (°C)'" 
    print'   },' 
    print'   plotLines: [{' 
    print'    value: 0,' 
    print'    width: 1,' 
    print'    color: '+"'#808080'" 
    print'   }]' 
    print'  },' 
    print'  tooltip: {' 
    print"   valueSuffix: '°C'" 
    print'  },' 
    print'  legend: {' 
    print"   layout: 'vertical'," 
    print"   align: 'right'," 
    print"   verticalAlign: 'middle'," 
    print'   borderWidth: 0' 
    print'  },' 
    print'  series: [{' 
    print"   name: 'Tokyo'," 
    print'   data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]' 
    print'  }, {' 
    print"   name: 'New York'," 
    print'   data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]' 
    print'  }, {' 
    print"   name: 'Berlin'," 
    print'   data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]' 
    print'  }, {' 
    print"   name: 'London'," 
    print'   data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]' 
    print'  }]' 
    print' });' 
    print'});' 
    print' </script>' 
    print'</head>' 
    print'<body>' 
    print'<script src="d:\slider\web_server3\cgi-bin\js_css\hightharts_js\highcharts.js"></script>' 
    print'<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>' 
    print'</body>' 
    print'</html>' 
    select_graph_view() <------------ call my def 

와 HTML 코드 : 전혀 CGI로이 일을하는 이유

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <title>Highcharts Example</title> 
    <script type="text/javascript" src="d:\slider\web_server3\cgi-bin\js_css\jquery-1.11.0.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
     $('#container').highcharts({ 
    title: { 
     text: 'Monthly Average Temperature', 
     x: -20 //center 
    }, 
    subtitle: { 
     text: 'Source: WorldClimate.com', 
     x: -20 
    }, 
    xAxis: { 
     categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 
      'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
    }, 
    yAxis: { 
     title: { 
      text: 'Temperature (?C)' 
     }, 
     plotLines: [{ 
      value: 0, 
      width: 1, 
      color: '#808080' 
     }] 
    }, 
    tooltip: { 
     valueSuffix: '?C' 
    }, 
    legend: { 
     layout: 'vertical', 
     align: 'right', 
     verticalAlign: 'middle', 
     borderWidth: 0 
    }, 
    series: [{ 
     name: 'Tokyo', 
     data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] 
    }, { 
     name: 'New York', 
     data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5] 
    }, { 
     name: 'Berlin', 
     data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0] 
    }, { 
     name: 'London', 
     data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8] 
    }] 
    }); 
}); 
</script> 
    </head> 
    <body> 
    <script src="d:\slider\web_server3\cgi-bin\js_css\hightharts_js\highcharts.js"></script> 
    <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div> 
    </body> 
</html> 

답변

0

난 정말 이해가 안 돼요. 서버 측 처리를 수행하지 않으므로 정적 HTML 파일이 더 적합합니다. (당신이 은 서버 측 처리를 수행하려는 경우, 당신은 적절한 템플릿 시스템을 사용해야합니다.)

그러나 나는 깜짝 놀라게 할 것입니다 파일 경로에 JS 파일을 제공하는 경우 - d:\whatever - 오히려 웹보다 URL이 실제로 작동했습니다.

+0

이 경로 D : 내 파이썬 simpe 서버의 CGI 스크립트가 당연하지 CGI-빈 라이브러리에서 작동하는이 경로로 작업 woud 경우에만이 문제를 explorering 위해이었다 \ 어떤 파이썬의이 기본 HttpServer a 정적 CGI 내 CGI 스크립트를 호출하지만 do_GET 메서드를 사용하지 않는 html – user3216321

0

파이썬 스크립트를 실행하려면 cgi 웹 서버를 실행해야합니다. 이 당신의 루트 응용 프로그램 폴더에 cgi_testserver.py 만들기 :

import CGIHTTPServer 
import BaseHTTPServer 

class Handler(CGIHTTPServer.CGIHTTPRequestHandler): 
     cgi_directories = ["/cgi-bin"] 

PORT = 5001 
httpd = BaseHTTPServer.HTTPServer(("", PORT), Handler) 
print "serving at port", PORT 
httpd.serve_forever() 

이 그 다음을 생성/CGI-bin/디렉토리, 거기에 파이썬 스크립트를 배치하고 그래서 같이 HTML 파일에 전화 :

http://localhost:5001/cgi-bin/name_of_python_script.py 

대신 :

d:\slider\web_server3\cgi-bin\js_css\hightharts_js\highcharts.js 
+0

내 CGI를 matplotlib로 excecute 할 때 내 CGIHttpServer가 좋아, 작동하지만 제 예제에서 highcharts.js 라이브러리를 사용하려고합니다. t (어쩌면 그것은 higthcharts와 함께 작동하지 않을 것입니다. 흥미 롭습니다. 답변을 주셔서 감사합니다! P.S. 당신이 볼 수 있듯이 higtharts로만 내 음모를 꾸미고 싶습니다 – user3216321

+0

페이지에 액세스하기 위해 어떤 브라우저를 사용하고 있습니까? file : // (localhost)에서로드하면 Chrome에 문제가 발생합니다. Firefox 또는 Safari에로드됩니까? –

+0

브라우저에서 웹 페이지를 열 때 개발자 콘솔에 오류가 발생합니까? –

관련 문제