Python CGI скрипт не работает должным образом

0

Когда я создаю 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>
Теги:

2 ответа

0

вам нужно запустить веб-сервер 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
  • 0
    Мой CGIHttpServer точно такой же, как ваш, когда я выполняю CGI с помощью matplotlib, он работает, но в моем примере я пытаюсь использовать библиотеку highcharts.js, это не так ( Ваш ответ! PS Как вы можете видеть, я хочу представить свои данные только с высокими
  • 0
    Какой браузер вы используете для доступа к странице? В Chrome есть некоторые странные проблемы при загрузке из file: // (localhost). Он загружается в Firefox или Safari?
Показать ещё 2 комментария
0

Я действительно не понимаю, почему вы делаете это как CGI. Вы не выполняете обработку на стороне сервера, поэтому статичный HTML файл будет более подходящим. (И если вы собираетесь выполнять обработку на стороне сервера, вы должны использовать правильную систему шаблонов.)

Однако я был бы поражен, если бы на самом деле работали файлы JS по пути к файлу - d:\whatever - а не веб-URL.

  • 0
    этот путь d: \ независимо от того, что было только для изучения этой проблемы, если он будет работать с этим путем, конечно, скрипт cgi моего сервера python simpe работает из библиотеки cgi-bin. У меня есть базовый Python HttpServer и статический html, в котором я вызываю свои скрипты cgi , но не используя методы do_GET

Ещё вопросы

Сообщество Overcoder
Наверх
Меню