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

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

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

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

Q&A

0回答

2015閲覧

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

gaijin

総合スコア30

Python 3.x

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

0グッド

0クリップ

投稿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 -

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

argparse

2018/12/07 16:36

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問