返回200,但是没有写入数据库,AttributeError: can't set attribute
来源:4-6 生成用户数据
夏目鲸鱼
2018-08-25
报错相关的代码:
@api.route('/register', methods=['POST'])
def create_client():
data = request.json
form = ClientForm(data=data) # 在实例化ClientForm的时候是否会自动调用自带的验证方法validate_type
if form.validate():
print('127890~~~~~~~')
promise = {
ClientTypeEnum.USER_EMAIL: __register_user_by_email
}
print(form.type.data)
promise[form.type.data]()
return 'success'
def __register_user_by_email():
form = UserEmailForm(data=request.json)
if form.validate():
print(form.nickname.data)
User.register_by_email(form.nickname.data,
form.account.data,
form.secret.data)
else:
print('validation error~')
class UserEmailForm(Form):
account = StringField(validators=[Email('invalidate email')])
secret = StringField(validators=[DataRequired(), Regexp(r'^[A-Za-z0-9_*&$#@]{6,22}$')])
nickname = StringField(validators=[DataRequired(), length(min=2, max=22)])
def validate_account(self, value):
if User.query.filter_by(email=value.data).first():
raise ValidationError()
POST请求:
{"account":"777@qq.com", "secret":"123456", "type":100, "nickname":"natume"}
服务器响应:
127890~~~~~~~
ClientTypeEnum.USER_EMAIL
natume
123456
127.0.0.1 - - [25/Aug/2018 10:57:31] "POST /v1/client/register HTTP/1.1" 500 -
Traceback (most recent call last):
File "/Users/renyiguang/.local/share/virtualenvs/ginger-NkPelh6d/lib/python3.6/site-packages/flask/app.py", line 2301, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/renyiguang/.local/share/virtualenvs/ginger-NkPelh6d/lib/python3.6/site-packages/flask/app.py", line 2287, in wsgi_app
response = self.handle_exception(e)
File "/Users/renyiguang/.local/share/virtualenvs/ginger-NkPelh6d/lib/python3.6/site-packages/flask/app.py", line 1733, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Users/renyiguang/.local/share/virtualenvs/ginger-NkPelh6d/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/Users/renyiguang/.local/share/virtualenvs/ginger-NkPelh6d/lib/python3.6/site-packages/flask/app.py", line 2284, in wsgi_app
response = self.full_dispatch_request()
File "/Users/renyiguang/.local/share/virtualenvs/ginger-NkPelh6d/lib/python3.6/site-packages/flask/app.py", line 1807, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/renyiguang/.local/share/virtualenvs/ginger-NkPelh6d/lib/python3.6/site-packages/flask/app.py", line 1710, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/renyiguang/.local/share/virtualenvs/ginger-NkPelh6d/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
raise value
File "/Users/renyiguang/.local/share/virtualenvs/ginger-NkPelh6d/lib/python3.6/site-packages/flask/app.py", line 1805, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/renyiguang/.local/share/virtualenvs/ginger-NkPelh6d/lib/python3.6/site-packages/flask/app.py", line 1791, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/renyiguang/Project/flask-api/ginger/app/api/v1/client.py", line 22, in create_client
promise[form.type.data]()
File "/Users/renyiguang/Project/flask-api/ginger/app/api/v1/client.py", line 32, in __register_user_by_email
form.secret.data)
File "/Users/renyiguang/Project/flask-api/ginger/app/models/user.py", line 28, in register_by_email
user.password = secret
AttributeError: can't set attribute写回答
1回答
-
你先把错误解决了啊,没写入这个肯定是因为 这里代码写错了呀。
142018-09-05
相似问题
数据库能生成表,但是数据没有写入到表里
回答 1
数据库数据无法写入
回答 1