首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flask-Peewee和用户创建不起作用

Flask-Peewee和用户创建不起作用
EN

Stack Overflow用户
提问于 2014-05-22 02:20:42
回答 1查看 137关注 0票数 1

我目前正在为一个网站开发我的管理界面。然而,当我测试添加一个新用户时,我得到了以下回溯:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/home/cody/Documents/Flask/SUPRacing/flask/lib/python2.7/site-packages/flask/app.py", line 1701, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/cody/Documents/Flask/SUPRacing/flask/lib/python2.7/site-packages/flask/app.py", line 1689, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/home/cody/Documents/Flask/SUPRacing/flask/lib/python2.7/site-packages/flask/app.py", line 1687, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/cody/Documents/Flask/SUPRacing/flask/lib/python2.7/site-packages/flask/app.py", line 1360, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/cody/Documents/Flask/SUPRacing/flask/lib/python2.7/site-packages/flask/app.py", line 1358, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/cody/Documents/Flask/SUPRacing/flask/lib/python2.7/site-packages/flask/app.py", line 1344, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/cody/Documents/Flask/SUPRacing/flask/lib/python2.7/site-packages/flask_peewee/auth.py", line 170, in login
    form.password.data,
  File "/home/cody/Documents/Flask/SUPRacing/flask/lib/python2.7/site-packages/flask_peewee/auth.py", line 128, in authenticate
    if not user.check_password(password):
  File "/home/cody/Documents/Flask/SUPRacing/flask/lib/python2.7/site-packages/flask_peewee/auth.py", line 25, in check_password
    return check_password(password, self.password)
  File "/home/cody/Documents/Flask/SUPRacing/flask/lib/python2.7/site-packages/flask_peewee/utils.py", line 138, in check_password
    salt, hsh = enc_password.split('$', 1)
ValueError: need more than 1 value to unpack

下面是我的程序的各个相关区域的代码: model.py

代码语言:javascript
复制
class User(db.Model):
    id = IntegerField(primary_key=True)
    username = CharField()
    password = CharField()
    email = CharField(120)
    admin = BooleanField(default=False)
    active = BooleanField(default=True)

    # Flask-Login integration
    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return self.id

    # Required for administrative interface
    def __unicode__(self):
        return self.username
    def __repr__(self):
        return '<User %r>' % (self.username)

app.py

代码语言:javascript
复制
class UserView(ModelAdmin):
    columns = ('username', 'email', 'admin', 'active')
    filter_exclude = ('id', 'password')
    exclude = ('id')

我确信我遗漏了一些明显的东西,但我想我应该把它贴出来,以防我没有遗漏。如果我是,我在这里做错了什么?

这里有一些屏幕截图,当我这样做的时候,管理界面是什么样子的。

EN

回答 1

Stack Overflow用户

发布于 2014-05-22 02:48:01

根据Flask-Pewee documentation的说法,如果您定义了自定义用户模型,则必须扩展BaseUser类。这将确保根据this code将您的密码创建为(盐,散列)的元组

现在,您将在此行中看到错误

代码语言:javascript
复制
salt, hsh = enc_password.split('$', 1)

它试图拆分从来不存在的元组

因此,简而言之,您的用户模型应该定义为:

代码语言:javascript
复制
class User(db.Model, BaseUser):
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23790948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档