私はpython web.pyフレームワークを使用して小さなWebアプリケーションを設計しています.index.pyコードは次のとおりです
index.py
import web
from web import form
import MySQLdb as mdb
render = web.template.render('templates/')
urls = (
'/', 'Login',
'/projects', 'Projects',
)
app = web.application(urls, globals())
conn = mdb.connect(user='root', passwd='redhat', db='Python_Web', host='localhost')
class Login:
login_form = form.Form(
form.Textbox('username', form.notnull),
form.Password('password', form.notnull),
form.Button('Login'),
)
def GET(self):
form = self.login_form()
return render.login(form)
def POST(self):
if not self.login_form.validates():
return render.login(self.login_form)
i = web.input()
username = i.username
password = i.password
query = "select user_login,user_password from user where user_login = '%s' " % username
cur = conn.cursor()
cur.execute( query )
user_details = cur.fetchone()
if username == user_details[0] and password == user_details[1]:
raise web.seeother('/projects')
else:
return render.login_error(form)
if __name__ == "__main__":
web.internalerror = web.debugerror
app.run()
localhost:8080
ブラウザで上記のファイルを実行すると、コードが含まれ、次のlogin.html
ようにアクセスされるログインページが表示されますrender.login(form)
。
しかし、ユーザー名とパスワードが一致すると、私の意図は別のページ ( projects.py
) にリダイレクトされ、上記のように記述されweb.seeother('/projects')
ます。これでプロジェクト クラスに移動し、そのクラスの html ページが表示されます
しかし、ログインボタンをクリックすると、次のエラーが表示されます
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/web/application.py", line 239, in process
return self.handle()
File "/usr/lib/python2.7/site-packages/web/application.py", line 230, in handle
return self._delegate(fn, self.fvars, args)
File "/usr/lib/python2.7/site-packages/web/application.py", line 420, in _delegate
return handle_class(cls)
File "/usr/lib/python2.7/site-packages/web/application.py", line 396, in handle_class
return tocall(*args)
File "/home/local/usser/python_webcode/index.py", line 55, in GET
app.run()
File "/usr/lib/python2.7/site-packages/web/template.py", line 881, in __call__
return BaseTemplate.__call__(self, *a, **kw)
File "/usr/lib/python2.7/site-packages/web/template.py", line 808, in __call__
return self.t(*a, **kw)
TypeError: __template__() takes exactly 1 argument (0 given)
上記のエラーを解決する方法について誰か助けてもらえますか
また、web.pyで、htmlファイルへのリンクを持つ別のクラスにリダイレクトする方法