缺少 2 个必需的位置参数,但我不希望它们成为开始的参数?
missing 2 required positional arguments but I don't want them to be arguments to begin with?
这是我使用 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
成为其他几个 tables
中的外键
这里是有问题的路线:
@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
因为这些专栏只是让我确保 table 与其他的有关系两个 table。我该怎么办?
这里是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"))
}
您不必定义 init 方法。 Flask-SQLAlchemy 会为你生成它。这是满足您需要的用户 class:
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 __repr__(self):
return f"User('{self.username}','{self.email}', '{self.password}', '{self.base_city}', '{self.about_me}', '{self.mic_submit}','{self.mic_checkin}')"
这是我使用 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
成为其他几个 tables
这里是有问题的路线:
@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
因为这些专栏只是让我确保 table 与其他的有关系两个 table。我该怎么办?
这里是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"))
}
您不必定义 init 方法。 Flask-SQLAlchemy 会为你生成它。这是满足您需要的用户 class:
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 __repr__(self):
return f"User('{self.username}','{self.email}', '{self.password}', '{self.base_city}', '{self.about_me}', '{self.mic_submit}','{self.mic_checkin}')"