开发者社区> 问答> 正文

TypeError:web.py python框架中的__template __()

我正在使用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')上述方式编写。现在,这将进入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文件链接的类

展开
收起
祖安文状元 2020-02-21 15:58:36 484 0
2 条回答
写回答
取消 提交回答
  • 代码改变世界,我们改变代码

    可惜web.py停止维护了。

    2020-03-18 17:54:04
    赞同 展开评论 打赏
  • 可能是Projects控制器中有错误,您没有将必需的参数传递给模板渲染。

    2020-02-21 15:58:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Web应用系统性能优化 立即下载
高性能Web架构之缓存体系 立即下载
PWA:移动Web的现在与未来 立即下载