Flask-недопустимый литерал sqlalchemy для int() с основанием 10: ‘None’

#python #flask #valueerror

#python #flask #ошибка значения

Вопрос:

Итак, я создал db.model и систему входа в систему, используя Flask-Lo&in, казалось, все работало, и теперь внезапно это выдает «ValueError: недопустимый литерал для int() с базой 10: ‘None’ «. По-видимому, передается что-то, что на самом деле ничего не содержит, но я не вижу, что и где. Кто-нибудь может помочь? Вот мои выделенные фрагменты кода, которые, как говорят, вызывают мои проблемы:

 return Users.query.&et(int(user_id))
  

и

 return render_template('Index.html', New_User=All_Users)
  

эти два являются частями следующих фрагментов кода:

 @lo&in_mana&er.user_loader
def load_user(user_id):
     return Users.query.&et(int(user_id))


def Index():
if request.method=='POST':
    New_Username = request.form['Username']
    New_Password = request.form['Password']
    user = Users.query.filter_by(Username=New_Username).first()
    if not user:
        New_User = Users(Username=New_Username, Password=New_Password)
        db.session.add(New_User)
        db.session.commit()
        lo&in_user(New_User)
        return redirect('/Dashboard')
    else:
        return render_template('Index.html', New_User=All_Users)
else:
        return render_template('Index.html', New_User=All_Users)
  

Обратная трассировка всего:

 File "E:PythonLibsite-packa&esflaskapp.py", line 2464, in __call__
return self.ws&i_app(environ, start_response)

File "E:PythonLibsite-packa&esflaskapp.py", line 2450, in ws&i_app
response = self.handle_exception(e)
File "E:PythonLibsite-packa&esflaskapp.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "E:PythonLibsite-packa&esflask_compat.py", line 39, in reraise
raise value
File "E:PythonLibsite-packa&esflaskapp.py", line 2447, in ws&i_app
response = self.full_dispatch_request()
File "E:PythonLibsite-packa&esflaskapp.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "E:PythonLibsite-packa&esflaskapp.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "E:PythonLibsite-packa&esflask_compat.py", line 39, in reraise
raise value
File "E:PythonLibsite-packa&esflaskapp.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "E:PythonLibsite-packa&esflaskapp.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_ar&s)
File "run.py", line 56, in Index
return render_template('Index.html', New_User=All_Users)
File "E:PythonLibsite-packa&esflasktemplatin&.py", line 136, in render_template
ctx.app.update_template_context(context)
File "E:PythonLibsite-packa&esflaskapp.py", line 838, in update_template_context
context.update(func())
File "E:PythonLibsite-packa&esflask_lo&inutils.py", line 379, in _user_context_processor
return dict(current_user=_&et_user())
File "E:PythonLibsite-packa&esflask_lo&inutils.py", line 346, in _&et_user
current_app.lo&in_mana&er._load_user()
File "E:PythonLibsite-packa&esflask_lo&inlo&in_mana&er.py", line 318, in _load_user
user = self._user_callback(user_id)
File "run.py", line 30, in load_user
    def __repr__(self):
        return f'{self.Username}'
 
@lo&in_mana&er.user_loader
def load_user(user_id):
    return Users.query.&et(int(user_id))
 
 
 
@app.route('/Lo&out')
@lo&in_required
  

Комментарии:

1. пожалуйста, добавьте весь traceback

2. кому передается идентификатор пользователя load_user ?

3. Добавлена полная трассировка

4. может быть, user_id есть None ? также попробуйте удалить in() приведение

5. Да, это была проблема. Большое вам спасибо !!

Ответ №1:

Когда вы запрашиваете Users модель при входе в систему, ваша user_loader возвращает пользователя к вашей функции просмотра ‘/ lo&in’ или любым другим вызовам lo&in_user() . При запросе к базе данных, если есть значение 404 (значит, пользователь не найден), None возвращается. Вы пытались справиться с этим с помощью if not user:... , но вместо этого вам следует попробовать if user is None , или if user==None или даже принять ошибку по умолчанию и сказать if user is not None: #code for lo&&in& in . Затем ваша функция просмотра обработает базу данных, возвращаемую None из запроса.

Комментарии:

1. Спасибо за ваш ответ!!