Форум сайта python.su
ОШИБКА.
вот КОД:
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)
Офлайн
:)
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
Например, так…
Офлайн
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)
Офлайн
может хватит за каждой мелочью на форум лезть?
научись уже думать. это прежде чем еще раз подумать.
ну правда, что тут непонятного? у тебя record не вернулся из запроса.
ps: и да, отладку никто не отменял.
Офлайн
multikвсе сделал….
может хватит за каждой мелочью на форум лезть?
научись уже думать. это прежде чем еще раз подумать.
ну правда, что тут непонятного? у тебя record не вернулся из запроса.
ps: и да, отладку никто не отменял.
Офлайн
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") # ...
Офлайн