前提・実現したいこと
Python3でオブジェクト指向を用いたwebアプリ開発の勉強中です。
フレームワークはbottleを使用しています。
Mainにて別クラスの@GETを割り当てたメソッドを呼び出し、そのメソッドでHTMLファイルをreturnしています。
しかし実行後に指定したURLにアクセスすると
500 Internal Server Error
が発生してしまいます。
初心者故愚かなミスを犯している可能性もありますが、有識者の方のご助力をいただきたいです。
何卒よろしくお願いいたします。
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
ブラウザ上
500 Internal Server Error
ターミナル上
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/bottle.py", line 862, in _handle
return route.call(**args)
File "/usr/local/lib/python3.6/site-packages/bottle.py", line 1740, in wrapper
rv = callback(*a, **ka)
TypeError: login() missing 1 required positional argument: 'self'
該当のソースコード
main.py
coding:utf-8
from bottle import run, get, post, template, request # or route
import Welcome
welcome = Welcome.Welcome()
#welcome.hello()
welcome.login()
if name == "main":
# テスト用のサーバをlocalhost:8080で起動する
# reloader=Trueにより、ソースを書き換えると自動的に再起動される
run(host="IPアドレス", port=8000, reloader=True)
Welcome.py
coding:utf-8
from bottle import run, get, post, template, request # or route
from bottle import TEMPLATE_PATH, jinja2_template as template
class Welcome():
def init(self):
self.wc = "hello"
TEMPLATE_PATH.append("./template") @classmethod @get('/welcome') # or @route('/login') def login(self): """ GETで/welcomeにアクセスした際の処理 """ return template('welcome.html')
welcome.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Welcome</title> </head> <form action = "/welcome", method = "post"> <body> <h1>Welcome</h1> </body> </html>試したこと
・@classmethodを付け加える
・Welcome.pyのlogin()の引数をlogin(self,str)とし、Mainでlogin("hello")と呼び出してみる。
※Welcome.pyにて、classではなくメソッドのみで書き換え、Mainにて
from Welcome import login, do_login
とした結果、うまく動いています。故にパス指定は正確だと思われます。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。