1

私はローカルHTMLファイルの自動生成に取り組んでおり、必要なすべての関連データはPythonスクリプトにあります。Webサーバーが設置されていないと、どうすればよいかわかりません。そうしないと、AJAX/jsonソリューションが可能になると思います。

基本的にPythonには、JavaScriptとHTMLを使用してグラフを作成するために使用する必要のあるリストオブジェクトと辞書オブジェクトがいくつかあります。私が持っている解決策の1つ(これは本当にひどいです)は、文字列を使用してPython内から文字通りHTML / JSを記述し、ファイルに保存することです。

ここで他に何ができますか?JavascriptにはファイルI/O機能がないと確信しています。

ありがとう。

4

6 に答える 6

4

Pythonコードにあるデータを、JavaScriptで読み取り可能な形式にする必要がありますよね?

データ構造を取得してJSONに変換し、ファイルに含まれている単純な.jsファイルを作成してみませんか。.htmlvar data = { json: "object here" };

于 2012-07-18T17:49:37.767 に答える
1

テンプレーティングシステムを使用することについてどう思いますか?それはあなたのニーズに合うでしょう。

于 2012-07-18T17:41:15.293 に答える
1

「Webサーバーなし」について具体的に言及されていることは承知していますが、本当に邪魔にならず、これを複雑にしすぎて、将来の使用に備えて柔軟性を制限したい場合を除きます。

http://docs.python.org/library/simplehttpserver.htmlのような非常に単純なWebサーバーを使用できませんか?そうすれば、サイトを公開する必要がある場合でも、適切なWebサーバーをセットアップするためのURLがすでに用意されています。

于 2012-07-18T17:45:59.717 に答える
1

たぶん、あなたはクッキーに書き込み、それからJavaScriptを介してそれにアクセスすることができますか?このSOの答えに似ていますか?

于 2012-07-18T17:47:30.560 に答える
1

PythonのJSONエンコーダーおよびデコーダーライブラリを使用できます。このようにして、PythonデータをJSON形式にエンコードし、それをHTMLドキュメントに含めることができます。次に、HTMLファイルでJavascriptを使用して、JSONでエンコードされたデータを操作します。

http://docs.python.org/library/json.html

于 2012-07-18T17:48:52.477 に答える
0

これがローカルホストのみに必要な場合は、次のようにすることができます。アクセスするには、http://localhost:8080/foo;に電話をかけます。ただし、これにより、クロスサイトインジェクション保護が原因でいくつかの問題が発生する可能性があります。これらはグーグルで簡単に解決できます。

JS側では、次のようなAJAX呼び出しを行います(jQueryを想定)

$.ajax('http://localhost:8080/foo', function (data) {console.log(data)});

そして、Python側では、このファイルをコンピューターで使用しようとしているhtmlファイル(index.html)と同じディレクトリに置き、実行します。

import BaseHTTPServer
import json

class WebRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
        def do_GET(self):
            desiredDict = {'something':'sent to JS'}
            if self.path == '/foo':
                self.send_response(200)
                self.send_header("Content-type", "application/json")
                self.end_headers()
                self.wfile.write(json.dumps(desiredDict))
            else: 
                if self.path == '/index.html' or self.path == '/':
                    htmlFile = open('index.html', 'rb')
                    self.send_response(200)
                    self.send_header("Content-type", "text/html")
                    self.send_header("Access-Control-Allow-Origin","http://localhost:8080/")
                    self.end_headers()
                    self.wfile.write(htmlFile.read())
                else:
                    self.send_error(404)

server = BaseHTTPServer.HTTPServer(('',8080), WebRequestHandler)
server.serve_forever()
于 2012-07-18T18:01:13.947 に答える