1

私は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ファイルへのリンクを持つ別のクラスにリダイレクトする方法

4

1 に答える 1

0

おそらくProjects、必要な引数をテンプレート レンダーに渡さないコントローラーでエラーが発生する可能性があります。

于 2012-10-10T13:51:50.553 に答える