【发布时间】:2021-11-02 23:38:10
【问题描述】:
这是我使用 Flask 的 Python 代码的一部分:
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
password = db.Column(db.String(60), nullable=False)
base_city = db.Column(db.String(120), nullable=False)
about_me = db.Column(db.String(1000), nullable=False, default='comedy!')
mic_submit = db.relationship('Mic', backref='initiator', lazy=True)
mic_checkin = db.relationship('Checkins', backref='signee', lazy=True)
def __init__(self, username, email, password, base_city, about_me, mic_submit, mic_checkin):
self.username = username
self.email = email
self.password = password
self.base_city = base_city
self.about_me = about_me
self.mic_submit = mic_submit
self.mic_checkin=mic_checkin
def __repr__(self):
return f"User('{self.username}','{self.email}', '{self.password}', '{self.base_city}', '{self.about_me}', '{self.mic_submit}','{self.mic_checkin}')"
class RegisterSchema(ma.Schema):
class Meta:
fields = ('id', 'username', 'email', 'password', 'base_city', 'about_me')
register_schema = RegisterSchema()
registers_schema = RegisterSchema(many=True)
mic_submit 和 mic_checkin 存在是因为我希望 id 成为其他几个表中的外键
这里是有问题的路线:
@app.route("/register", methods=['POST'])
def register():
username = request.json['username']
email = request.json['email']
password = request.json['password']
base_city = request.json['base_city']
about_me = request.json['about_me']
hashed_password = bcrypt.generate_password_hash(password)
user = User(username=username, email=email, password=hashed_password, base_city=base_city, about_me=about_me)
db.session.add(user)
db.session.commit()
我的问题是,当有人在网站上注册时,我希望他们只提交 username、 email、password、base city 和 about_me,但后端的错误是:
Traceback (most recent call last):
File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask_cors/extension.py", line 165, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask_cors/extension.py", line 165, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
raise value
File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "/home/pm/ionic_apps/pobblebonk/venv/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/pm/ionic_apps/pobblebonk/backend/app.py", line 138, in register
user = User(username=username, email=email, password=hashed_password, base_city=base_city, about_me=about_me)
TypeError: __init__() missing 2 required positional arguments: 'mic_submit' and 'mic_checkin'
但我不会要求他们提交mic_submit 和mic_checkin,因为这些列只是为了让我确保该表与其他两个表有关系。我该怎么办?
这是前端的 javascript APIService 文件:
export default class APIService {
static RegisterUser(username, email, password, base_city, about_me) {
console.log('i am here')
return fetch(`http://localhost:5000/register`, {
'method':'POST',
mode: 'cors',
headers: {
'Content-Type':'application/json'
},
body: JSON.stringify(username, email, password)
})
.then(resp => window.location.href = "login")
.catch(error => console.log(error, "Not In the APIService"))
}
【问题讨论】:
标签: javascript python flask backend web-development-server