Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 5, 2008 14:02:25

flashi4
От:
Зарегистрирован: 2008-01-16
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

ERROR

ОШИБКА.
вот КОД:

def save_acc(self):
record = model.Record()
record.user = request.params
record.password = request.params
record.flush()
h.redirect_to(action='saved_acc')


он добавляет в базу моих пользователей с паролем.

Вот моя модель :
КОД:

meta = MetaData()

records_table = Table('records', meta,
Column('id', Integer,primary_key=True),
Column('user', String(40), unique=True),
Column('password', String(40)),
)

class Record(object):
def __str__(self):
return self.title


Как вы заметили во втором Column'e поле user уникальное и при добавлении дубля в базу возникает ошибка…

<class ‘sqlalchemy.exceptions.SQLError’>: (IntegrityError) (1062, “Duplicate entry ‘1’ for key 2”) u'INSERT INTO records (user, password) VALUES (%s, %s)'


Кто знает как это можно убрать и сделать, чтобы при добавлении дубля в таблицу выдавалось сообщение, что “такой пользователь уже существует.”

Подскажите ПЛззз smile



Отредактировано (Фев. 5, 2008 15:06:52)

Офлайн

#2 Фев. 5, 2008 20:15:47

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

ERROR

:)
def save_acc(self):
record = model.Record()
record.user = request.params
record.password = request.params
try:
record.flush()
h.redirect_to(action='saved_acc')
except sqlalchemy.exceptions.SQLError, err:
if err.orig.__class__.__name__ == ‘IntegrityError’:
h.redirect_to(action='edit_acc', message='User already exists')
else:
raise

Например, так…



Офлайн

#3 Фев. 6, 2008 08:09:38

flashi4
От:
Зарегистрирован: 2008-01-16
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

ERROR

def signin(self):
if len(request.params) > 1 :
record = model.Record()
record.user = request.params
record.password = request.params
record = model.Record.get_by(user = request.params)
if record.password == request.params:
session = request.params
session.save()
return h.redirect_to(action=“private”)
else:
return Response(“”“\
<html>
<head><title>Please Login!</title></head>
<body>
<h1>Please Login</h1>
<form action=”signin“ method=”post“>
<dl>
<dt>Username:</dt>
<dd><input type=”text“ name=”user“></dd>
<dt>Password:</dt>
<dd><input type=”password“ name=”password“></dd>
</dl>
<input type=”submit“ name=”authform“ />
<hr />
</form>
</body>
</html>
”“”)

def public(self):
return Response('This is public')

def private(self):
if request.environ.get(“REMOTE_USER”):
return Response('This is private')
else:
return h.redirect_to(action=“signin”)



ERROR:::



Module vnc.controllers.welcome:76 in signin
<< record.password = request.params
record = model.Record.get_by(user = request.params)
if record.password == request.params:
session = request.params
session.save()>> if record.password == request.params:
exceptions.AttributeError: ‘NoneType’ object has no attribute ‘password’



Отредактировано (Фев. 8, 2008 14:59:11)

Офлайн

#4 Фев. 8, 2008 17:23:37

multik
От:
Зарегистрирован: 2007-10-16
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

ERROR

может хватит за каждой мелочью на форум лезть?
научись уже думать. это прежде чем еще раз подумать.
ну правда, что тут непонятного? у тебя record не вернулся из запроса.
ps: и да, отладку никто не отменял.



Офлайн

#5 Фев. 12, 2008 08:46:35

flashi4
От:
Зарегистрирован: 2008-01-16
Сообщения: 55
Репутация: +  0  -
Профиль   Отправить e-mail  

ERROR

multik
может хватит за каждой мелочью на форум лезть?
научись уже думать. это прежде чем еще раз подумать.
ну правда, что тут непонятного? у тебя record не вернулся из запроса.
ps: и да, отладку никто не отменял.
все сделал….



Офлайн

#6 Фев. 14, 2008 11:20:29

multik
От:
Зарегистрирован: 2007-10-16
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

ERROR

flashi4
multik

научись уже думать. это прежде чем еще раз подумать.
все сделал….
как минимум этого не сделал.

вот эти строчки нафига?
# ...
record = model.Record()
record.user          = request.params['user']
record.password   = request.params['password']
# ...
а здесь:
# ...
record = model.Record.get_by(user = request.params['user'])
if record.password ==  request.params['password']:
    session['user'] = request.params['user']
    session.save()
    return h.redirect_to(action="private")
# ...
где здесь проверка того, что record is not None?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version