Когда я создаю html в моем скрипте cgi python, он не показывает! Но когда я открываю эту пустую страницу по исходному коду в IE и копирую в txt (html) файл, а затем открываю ее IE, он отлично работает! Не могу понять, почему это произошло, если сгенерировано код в порядке! Любой, пожалуйста, скажите мне, могу ли я исправить это или нет? Мой скрипт python:
#!/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-код с пустой сгенерированной страницы:
<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>
вам нужно запустить веб-сервер cgi для выполнения скрипта python. Создайте 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/, разместите там скрипт python и вызовите его в файле HTML следующим образом:
http://localhost:5001/cgi-bin/name_of_python_script.py
вместо:
d:\slider\web_server3\cgi-bin\js_css\hightharts_js\highcharts.js
Я действительно не понимаю, почему вы делаете это как CGI. Вы не выполняете обработку на стороне сервера, поэтому статичный HTML файл будет более подходящим. (И если вы собираетесь выполнять обработку на стороне сервера, вы должны использовать правильную систему шаблонов.)
Однако я был бы поражен, если бы на самом деле работали файлы JS по пути к файлу - d:\whatever
- а не веб-URL.