Найти - Пользователи
Полная версия: ERROR
Начало » Pyramid / Pylons / TurboGears » ERROR
1
flashi4
ОШИБКА.
вот КОД:

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
Андрей Светлов
:)
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

Например, так…
flashi4
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’
multik
может хватит за каждой мелочью на форум лезть?
научись уже думать. это прежде чем еще раз подумать.
ну правда, что тут непонятного? у тебя record не вернулся из запроса.
ps: и да, отладку никто не отменял.
flashi4
multik
может хватит за каждой мелочью на форум лезть?
научись уже думать. это прежде чем еще раз подумать.
ну правда, что тут непонятного? у тебя record не вернулся из запроса.
ps: и да, отладку никто не отменял.
все сделал….
multik
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?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB