python - Ralat semasa menggunakan login_user dalam flask-login?
怪我咯
怪我咯 2017-06-12 09:25:19
0
1
960

log masuk kelalang digunakan dalam kelalang untuk pengesahan log masuk Berikut ialah model Pengguna:

class User(db.Model, UserMixin):
    id = db.Column(db.INTEGER, primary_key=True)
    name = db.Column(db.String(64))
    email = db.Column(db.String(64))
    password_hash = db.Column(db.String(128))

    @property
    def password(self):
        raise AttributeError('password is not a readable attribute')

    @password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

    def verify_password(self, password):
        return check_password_hash(self.password_hash, password)

    def __repr__(self):
        return '<User %r>' % self.name


@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

Ini borangnya:

class RegisterForm(FlaskForm):
    email = StringField('Email', validators=[Required(), Length(1, 64), Email()])
    username = StringField('Username', validators=[Required(), Length(1, 16), Regexp('^[A-Za-z][1-9]*$',
                                                                                     message='first is a string and the second must be a int')])
    password = PasswordField('Password', validators=[Required(), Length(1, 64)])
    password2 = PasswordField('Config Password', validators=[Required(), Length(1, 64)])
    submit = SubmitField('Register')

    def validata_email(self, field):
        if User.query.filter_by(email=field.data).first():
            raise ValidationError('Email is already register')

    def validata_username(self, field):
        if User.query_by(username=field.data).first():
            raise ValidationError('User is already in use')

Ini ialah fungsi pandangan:

@auth.route('/register', methods=['GET', 'POST'])
def register():
    form = RegisterForm()
    if form.validate_on_submit():
        user = User(name=form.username.data, email=form.email.data, password=form.password.data)
        db.session.add(user)
        login_user(user, True)
        flash('Register successful!!')
        return render_template('user.html')
    return render_template('register.html', form=form)

Situasi semasa ialah apabila pengguna berjaya mendaftar, dia akan log masuk secara automatik dan melompat ke halaman berikut, tetapi jika dia terus meminta selepas melompat, ralat akan berlaku Jika log masuk dialih keluar semasa pendaftaran, akan berlaku takde masalah.tak tahu kenapa

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(1)
曾经蜡笔没有小新

Tiada apabila user_id tidak dapat ditemui, dan ralat berlaku apabila melaksanakan int(user_id)

Cuba perenggan ini

def load_user(user_id):
    return User.query.get(int(user_id))

ditukar kepada

def load_user(user_id):
    try: 
        output = User.query.get(int(user_id))
        return(output)
    except:
        return(None) 
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan