質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

受付中

python3 webブラウザに表示ができない

gaijin
gaijin

総合スコア30

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0回答

0評価

0クリップ

1623閲覧

投稿2018/11/27 14:26

python 初心者です。

教本にて独学にて勉強しております。
自分はタイポが多い為、今回のミスもタイポでしたら本当に申し訳ございません。

実行権限を与えwebブラウザで実行しようとするとファイルを開きますかとの表記が出ます。
コードは何度も確認したのですが、タイポではないように思っております。

特にエラーメッセージもないので解決策が見当たりません。
どうかご教授いただければと思っております。

下記がコードでございます。

#!/usr/bin/env python3 import os, cgi, cgitb, html import cksession import datetime class SecBoard: """ 秘密のメッセージボードを実現するクラス """ USERS = {"taro":"aaa", "jiro":"bbb"} FILE_MSG = "sec_msg.bin" def __init__(self): self.form = cgi.FieldStorage() self.session = cksession.CookieSession() self.check_mode() def check_mode(self): mode = self.form.getvalue("mode", "login") if mode == "login" : self.mode_login() elif mode == "trylogin" : self.mode_trylogin() elif mode == "logout" : self.mode_logout() elif mode == "sec" : self.mode_sec() elif mode == "secedit" : self.mode_secedit() else: self.mode_login() def print_html(self, title, html, headers = []): """ ヘッダ及びHTMLを出力する """ print("Content-Type: text/html; charset=utf-8") for hd in headers: print(hd) print("") print(""" <html><head><meta charset="utf-8"> <title>{0}</title></head><body> <h2>{0}</h2><div>{1}</div></body></html> """.format(title, html)) def show_error(self, msg): """ エラーを表示 """ self.print_html("エラー", """ <div style="color:red">{0}</div> """.format(msg)) def mode_login(self): """ ログイン画面を表示する """ self.print_html("会員専用ログイン", """ <form method="POST"> ユーザー名: <input type="text" name="user" size="8"><br> パスワード: <input type="password" name="pw" size="8"> <input type="submit" value="ログイン"> <input type="hidden" name="mode" value="trylogin"> </form> """) def mode_trylogin(self): """ ログイン可能か検証する """ user = self.form.getvelue("user", "") pw = self.form.getvalue("pw", "") if not (user in self .USERS): self.show_error("ユーザーが存在しません") return if self.USERS[user] != pw: self.show_error("パスワードが異なります") return now = datetime.datetime.now() self.session["login"] = now.timestamp() headers = [self.session.output()] self.print_html("ログイン成功", """ <a href="sec-board.py?mode=sec">会員専用ボードを見る</a> """, headers) def mode_logout(self): """ ログアウトする """ self.session['login'] = 0 self.print_html('ログアウト', """ <a href="sec-board.py">ログアウトしました</a> """, [self.session.output()]) def is_login(self): """ ログインしているか判定する """ if "login" in self.session: if self.session['login'] > 0: return True return False def mode_sec(self): """ 秘密メッセージを表示する """ if not self.is_login(): self.show_error('ログインが必要です') return msg = "ここに秘密のメッセージを書いてください" if os.path.exists(self.FILE_MSG): with open(self.FILE_MSG, "r", encoding="utf-8") as f: msg = f.read() msg = html.escape(msg) self.print_html("秘密のメッセージ", """ <form method="POST" action="sec-board.py"> <textarea name="msg" rows="5" cols="80">{0}</textarea> <br><input type="submit" value="変更"> <input type="hidden" name="mode" value="secedit"></form> <hr><a href="sec-board.py?mode=logout">→ログアウト</a> """.format(msg)) def mode_secedit(self): """ 秘密のメッセージを編集する """ if not self.is_login(): self.show_error("ログインが必要です", "") return msg = self.form.getvalue("msg", "") with open(self.FILE_MSG, "w", encoding="utf-8") as f: f.write(msg) self.print_html("変更しました", """ <a href="sec-board.py?mode=sec">内容を確認する</a> """) if __name__ == "__main_": cgitb.enable() app = SecBoard()
$ chmod +x cgi-bin/sec-board.py $ python3 -m http.server --cgi 8080 Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ... 127.0.0.1 - - [27/Nov/2018 23:18:58] "GET /cgi-bin/sec-board.py HTTP/1.1" 200 -

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

argparse

2018/12/07 16:36

if __name__ == "__main_": というのは typo に見えますが、如何でしょうか。それと、 cksession というパッケージが分かりませんでした。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。