Ошибка атрибута: тип объекта "Клиент" не имеет атрибута "получить"

Я использую пирамидальный фреймворк с BD postgres, я делаю логин, но у меня появляется следующая ошибка "Ошибка атрибута: Тип объекта" Клиент "не имеет атрибута" получить "". "

@view_config (route_name = 'login', renderer = 'templates / login.pt')

def login(request):
    a = request.params.get('login1')
    contrasenia = request.params.get('password1')
    if request.method == 'POST':
        if a and Client.get(a) == contrasenia:
            headers = remember(request, a)
            return HTTPFound('/', headers=headers)
    return {}

2 ответа

Ошибка описывает проблему. Эта строка является проблемой:

    if a and Client.get(a) == contrasenia:

Предмет Client не имеет атрибута get, Извините, я понятия не имею, что этот объект может быть основан на предоставленной информации.

Я предлагаю поработать над официальным вики-руководством по SQLAlchemy + URL для Pyramid. Хотя он использует SQLite для базы данных, эти концепции применимы и к Postgres. В шаге по аутентификации также есть соответствующие детали для вашей конкретной проблемы.

Если я угадываю правильно, вы, вероятно, пытаетесь аутентифицировать пользователя.

Назовите ваши переменные соответствующим образом:

email = request.params.get('email')
password = request.params.get('password')

Затем запросите клиента по электронной почте (я предполагаю, что вы используете SQLAlchemy):

client = Session.query(Client).filter(Client.email == email).first()

Если для данной электронной почты существует клиент, проверьте хэши паролей (поищите в интернете информацию о безопасности паролей, примеры решений: Salt and hash a password in python)

if client.password_hash == hashing_func(password):
    return HTTPFound('/', headers=remeber(request, client.id))
Другие вопросы по тегам