アプリ版:「スタンプのみでお礼する」機能のリリースについて

唐突な質問ですが、HTML、JavascriptでローカールのCSVファイルを読み込みブラウザで
グラフを表示しています。(Chart.js、要素canvasで対応)

データを検索して表示するようにしたいので、一旦元データをSQLLiteに保存することを
検討しています。
SQLLiteの読み書きはPythonで対応できそうですが、HTMLからPythonスクリプトの実行
方法がよくわかりません。

Javascriptの場合は、Html内に <script src="Java_Test.js"></script> のように
記載すれば良いですが、Python(xxx.py)の場合はどのように対応すれば良いでしょうか?

python -m http.server 9000で簡易的にサーバーを立てています。

お手数ですが、御教示願います。

A 回答 (2件)

クッソ、ハマったハマった、一体何じゃこりゃ、って状態でした。



> お手数ですが原因がわかりましたら御教示願います。

うーん、こっちは環境がLinuxなんで、完全に同じじゃないんですが・・・。
一つ言えるのはスクリプトファイルのコピペはPythonだと超危険です。インデント構造や、場合によっては改行文字が、サーバーが要求するモノと違う場合が出てきます(それでcgiスクリプトが正しく実行されないでエラーが吐かれる場合アリ)。
従って、面倒でもキチンと手で打っていった方が良いですね。

それで。こっちも色々ハマってたんで(走った、と思ったら文字化けしたり、とか・苦笑)、どれが原因とは言えないんですが、次の事柄を試してみて下さい。

1. https://qiita.com/sandream/items/e2ecb524240d81c … のjanken.htmlの

<input type="submit" name="submit" />



<input type="submit" name="submit"><br />

の打ち間違いじゃないか問題。
いや、HTMLの詳細は知らんのですが、ザーッと検索した限り<input />ってのは許されてねぇんじゃねぇの、と言う疑惑があります。知らんけど。

2. https://qiita.com/sandream/items/e2ecb524240d81c … のjanken.htmlのjanken.pyの冒頭、

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

が逆なんじゃないか問題。
少なくとも、こっちの環境だと

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

と言う順番じゃないとスクリプトファイルだと認識されないんですよね。
ええと、Python3.6以降になってからWindowsでもUNIXスタイルのシェバングを受け付けるようになったみたいですが(最近知った・笑)、まずはDOS窓でPythonって打ってPython3がキチンと走るかどうか試してみて下さい(こっちの環境だとpythonと打っても起動せず、結果python3じゃないと認識されない)。
どっちにせよ、ファイルのエンコーディング指定よりもシェバングの方が先に来ないとダメな模様です。

あと、UNIX/Linuxだと、スクリプトファイルの管理者権限がどーなってんだ、って話が出てきますが、恐らくWindowsだとProgram Files下にフォルダ作らない限り、そんなにクリティカルな話にならんと思うのですが・・・。
あと、文字化けにしても、Windowsだと文字コードがどうなのか、またLinuxとは違う話になってくるでしょうから、そっちの方は取り敢えず置いておきたいと思います。
    • good
    • 0

これかしら?



Pythonでじゃんけんポイっ 初心者向け Windows ローカルサーバで動かそう:
https://qiita.com/sandream/items/e2ecb524240d81c …
    • good
    • 0
この回答へのお礼

早速の御教示ありがとうございます。
試したところhtmlは正しく表示されますが、送信ボタンを押すとファイルがありませんのエラーになります。
ファイル構成
C:\Test\IoT_Test\janken\janken.html
C:\Test\IoT_Test\janken\cgi-bin\janken.py
ブラウザはCrome, PythonはVer3.8.3を使用しています。

お手数ですが原因がわかりましたら御教示願います。

お礼日時:2020/07/30 09:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています