puzzle
@puzzle (kokoko)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

HTMLでPythonをうごかしたい!

最近、遊びながらWebページを作っています。おふざけ半分なところもあり、勉強しながらではありますがHTMLとCSSを書いています。そこで、前に自分で書いた(ほとんど模写ではありますが)Pythonのコードを動かしてみたいと思ってしまいました。

ここに使いたいHTMLの大枠のコード、Pythonの大枠のコードを置きます。
(詳細は私のGithubにあります。)

HTMLのコード

<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset = "utf-8">
        <title>~~~~~~~~~~~</title>
        <link rel = "stylesheet"  href = "style.css">
    </head>

    <body>

        <div class = "header">
            <h1>名言を作成しよう</h1>
        </div> 
        <div class = "main">
            <p>ここに長めの文を入力してね</p>
        </div>
        <div class = "input_text">
            <textarea></textarea>
        </div>
        <input class = "submit" type = "submit" value = "押してね">
    </body>
</html>

Pythonのコード

from sys import argv
import MeCab
import markovify

def main ():
    #文を受け取って、処理するコードがずらずら。
    print(sentence)

if __name__ == "__main__":
    main()

読みにくいコードかもしれませんが、実現したい大まかな流れを示すと
1.Webページでtextareaから文を入力し、送信ボタンをおす。
2.Pythonがそれを受け取り、処理をして、文を返す。
3.処理された文をWebページ内に表示する。
です。
どのようにして、textareaに入力された文をPythonに渡すのか、Pythonが返した値をWebページ内に表示するのかを教えていただきたいです。

追記:この質問を書いていて疑問に思ったことが一つあります。GithubでWebページを公開する際、何も手を加えなくてもPythonのモジュール等はimportされるのでしょうか。もしかして使うモジュールを同じリポジトリに置いておかなければならないのでしょうか。Githubも最近使い始めて勉強中です。。。
よろしくお願いします。

0

3Answer

まずPythonのスクリプトをCGIが動くサーバにアップロードして動かす必要があります。
GitHub Pagesでは HTMLなどの静的サイトは動作しますが、Pythonは動きません

その上で、WebAPIについて勉強してみてください。

1.Webページでtextareaから文を入力し、送信ボタンをおす。
2.Pythonがそれを受け取り、処理をして、文を返す。
3.処理された文をWebページ内に表示する

こちらについて知ることができると思います

0Like

Comments

  1. @puzzle

    Questioner

    ご回答ありがとうございます!
    そちらの方を参考に調べてみようと思います。
  2. あ、すみません、
    > WebAPI

    と書きましたが、このプログラムだとformで送信で問題ないと思うので、WebAPIではなく『form post html』で調べてみてください
  3. @puzzle

    Questioner

    ありがとうございます!仰る通りに調べてみて自分なりにformやpostを記述して文を送ることはできました(確証はありませんが。。。)
    次の段階としてpythonで処理したデータを表示したいのですが、htmlを記述するマーカーとして使われるという
    print("Content-Type: text/html; charset=UTF-8")
    を記述したのですがpythonのコードが表示されるだけになってしまいます。もしよろしければ、この改善点もお聞きしたいです。
  4. それは Pythonファイルが 静的ファイルと認識されてしまっています。
    pythonファイルをアップロードしたファイルはどこのサーバに置かれましたか?
  5. https://career-tech.biz/2020/09/12/python-app-test-xserver/
    もしかするとこの辺の記事が役に立つかもしれません。

    ローカルで動かす分には問題ないですが、Mecabなど重いLibraryを使っている場合、このような無料サーバで動作させるのは難しいかもしれないですが
  6. @puzzle

    Questioner

    htmlとpythonのコードは同じディレクトリに置かれています。サーバは立てておらず、ローカルでブラウザ表示させている状態です。
  7. あー、ではまず pythonを実行する必要があります
    上記記事内にも書いているように

    `python3 -m http.server --cgi 8080`
    を実行してみてください。
  8. @puzzle

    Questioner

    返信が遅れてしまい申し訳ありません。。
    挙げていただいたコマンドを入力した後にhtmlファイルを開いて試したところ、
    Error code: 501

    Message: Can only POST to CGI scripts.
    Error code explanation: HTTPStatus.NOT_IMPLEMENTED - Server does not support this operation.
    POSTの形で送っているはずがこのようなエラーが出てしまいました。もともとpythonのコードがエラーを起こすことがあるのですが、その関係もあるのでしょうか。

ブラウザで動くスクリプトはJavascriptがメジャーですが、pythonもあるようです。Javascriptでことが済むならそっちのほうがいいように思いますが。

0Like

@mkod
横からすみません

ブラウザで動くスクリプトはJavascriptがメジャーですが、pythonもあるようです。Javascriptでことが済むならそっちのほうがいいように思いますが。

Pythonのコードにmecabとかがあるので言語処理系を実装したいのではないかと思います。
brythonは多分その辺はできないと思うので難しいのではないでしょうか...

0Like

Your answer might help someone💌