0
我想从web.py食谱中复制和使用示例'PostgreSQL数据库的用户身份验证'。我无法弄清楚为什么我会收到以下错误。web.py使用PostgreSQL数据库的用户身份验证示例
在/登录 'ThreadedDict' 对象没有属性 '登录'
在/登录 'ThreadedDict' 对象没有属性 '特权'
这里是错误输出到终端的第二个错误。 (第一个几乎相同)
Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/application.py", line 239, in process return self.handle() File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/application.py", line 230, in handle return self._delegate(fn, self.fvars, args) File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/application.py", line 420, in _delegate return handle_class(cls) File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/application.py", line 396, in handle_class return tocall(*args) File "/home/erik/Dropbox/Python/Web.py/Code.py", line 44, in GET render = create_render(session.privilege) File "/usr/local/lib/python2.7/dist-packages/web.py-0.37-py2.7.egg/web/session.py", line 71, in __getattr__ return getattr(self._data, name) AttributeError: 'ThreadedDict' object has no attribute 'privilege' 127.0.0.1:36420 - - [25/Aug/2012 01:12:38] "HTTP/1.1 GET /login" - 500 Internal Server Error
这是我的code.py文件。从烹饪书中可以看到很多剪切粘贴。我试着把所有的类和def放在主代码的顶部。我也试着用sudo启动python,如另一篇文章中提到的。
import web class index: def GET(self): todos = db.select('todo') return render.index(todos) class add: def POST(self): i = web.input() n = db.insert('todo', title=i.title) raise web.seeother('/') def logged(): return False #I added this to test error #1, Now I get error #2 #if session.login==1: # return True #else: # return False def create_render(privilege): if logged(): if privilege == 0: render = web.template.render('templates/reader') elif privilege == 1: render = web.template.render('templates/user') elif privilege == 2: render = web.template.render('templates/admin') else: render = web.template.render('templates/communs') else: render = web.template.render('templates/communs') return render class Login: def GET(self): if logged(): render = create_render(session.privilege) return '%s' % render.login_double() else: # This is where error #2 is render = create_render(session.privilege) return '%s' % render.login() def POST(self): name, passwd = web.input().name, web.input().passwd ident = db.select('users', where='name=$name', vars=locals())[0] try: if hashlib.sha1("sAlT754-"+passwd).hexdigest() == ident['pass']: session.login = 1 session.privilege = ident['privilege'] render = create_render(session.privilege) return render.login_ok() else: session.login = 0 session.privilege = 0 render = create_render(session.privilege) return render.login_error() except: session.login = 0 session.privilege = 0 render = create_render(session.privilege) return render.login_error() class Reset: def GET(self): session.login = 0 session.kill() render = create_render(session.privilege) return render.logout() #web.config.debug = False render = web.template.render('templates/', base='layout') urls = ( '/', 'index', '/add', 'add', '/login', 'Login', '/reset', 'Reset' ) app = web.application(urls, globals()) db = web.database(dbn='postgres', user='hdsfgsdfgsd', pw='dfgsdfgsdfg', db='postgres', host='fdfgdfgd.com') store = web.session.DiskStore('sessions') # Too me, it seems this is being ignored, at least the 'initializer' part session = web.session.Session(app, store, initializer={'login': 0, 'privilege': 0}) if __name__ == "__main__": app.run()
嗨林二汶我在web开发一个新手,我开始使用web.py最近,但无法弄清楚如何创建一个简单的登录页面,可以ü请提供给我你的模板和.html代码,以便我可以在你的帮助下理解基本的东西。我的所有意图都是从数据库创建简单的登录屏幕,我的匹配详细信息。因此,首先应该出现一个HTML登录屏幕模板,输入用户详细信息后,它应该重定向到下一页,我怀疑是在哪里创建模板页面代码以及如何访问上述代码 –