Я новый Flask и Postgres ...
Я следую этому уроку: https://auth0.com/blog/using-python-flask-and-angular-to-build-modern-apps-part-1/
Я создал сущность, подобную этой:
from marshmallow import Schema, fields
from sqlalchemy import Column, String, Boolean, Date
from .entity import Entity, Base
class Strategy(Entity, Base):
__tablename__ = 'strategies'
name = Column(String)
description = Column(String)
startDate = Column(Date)
endDate = Column(Date)
allowTeamToVote = Column(Boolean)
votingDeadline = Column(Date)
isActive = Column(Boolean)
def __init__(self, name, description, startDate, endDate, allowTeamToVote, votingDeadline, created_by):
Entity.__init__(self, created_by)
self.name = name
self.description = description
self.startDate = startDate
self.endDate = endDate
self.allowTeamToVote = allowTeamToVote
self.votingDeadline = votingDeadline
self.isActive = True
class StrategySchema(Schema):
id = fields.Number()
name = fields.Str()
description = fields.Str()
startDate = fields.DateTime()
endDate = fields.DateTime()
allowTeamToVote = fields.Boolean()
votingDeadline = fields.DateTime()
isActive = fields.Boolean()
created_at = fields.DateTime()
updated_at = fields.DateTime()
last_updated_by = fields.Str()
и метод Post:
@app.route('/strategies', methods=['POST'])
@requires_auth
def add_strategy():
# mount Strategy object
print(request.get_json())
posted_strategy = StrategySchema(only=('name', 'description', 'startDate', 'endDate', 'allowTeamToVote', 'votingDeadline', 'isActive'))\
.load(request.get_json())
print(posted_strategy.data)
strategy = Strategy(**posted_strategy.data, created_by="HTTP post request")
# persist Strategy
session = Session()
session.add(strategy)
session.commit()
# return created Strategy
new_strategy = StrategySchema().dump(Strategy).data
session.close()
return jsonify(new_strategy), 201
То, что не конвертируется при вызове метода .load (request.get_json ()), это все три значения даты и времени.
Я получаю следующую ошибку:
__init__() missing 3 required positional arguments: 'startDate', 'endDate', and 'votingDeadline'
Что я делаю не так?
1-е печатное заявление:
{'Задачи': [{'имя': 'afasdfdsa '}],' name ':' sdasdfdsaf ',' description ':' df
asfasdf ',' startDate ': '05 / 31/2018', 'endDate': '05 / 31/2018 ','allowTeamToVote ':
True,' голосованияDeadline ': '05 / 31/2018'}
2-й оператор печати:
{'allowTeamToVote': True, 'name ':' asfdfsd ',' description ':' dsfasdfs '}
Полное исключение:
127.0.0.1 - - [16 мая / 2018 20:43: 43] «ОПЦИИ / стратегии HTTP / 1.1» 200 - [2018-05-16 20: 43: 44,712] ОШИБКА в приложении: исключение / стратегии [POST] Traceback (большинствопоследний вызов цента): Файл "c: \ users \ jason.virtualenvs \ backend-foekiio5 \ lib \ site-packages \ flask \ app.py", строка 1982, в файле wsgi_app response = self.full_dispatch_request () File "c: \users \ jason.virtualenvs \ backend-foekiio5 \ lib \ site-packages \ flask \ app.py ", строка 1614, в файле full_dispatch_request rv = self.handle_user_exception (e) Файл" c: \ users \ jason.virtualenvs \ backend-foekiio5\ lib \ site-packages \ flask_cors \ extension.py ", строка 161, в wrapped_function возвращает cors_after_request (app.make_response (f (* args, ** kwargs))) Файл" c: \ users \ jason.virtualenvs \ backend-foekiio5 \ lib \ site-packages \ flask \ app.py ", строка 1517, в перерисовке handle_user_exception (exc_type, exc_value, tb) Файл" c: \ users \ jason.virtualenvs \ backend-foekiio5 \ lib \ site-packages \ flask_compat ".py ", строка 33, в ререйзе поднимите значение Файл" c: \ users \ jason.virtualenvs \ backend-foekiio5 \ lib \ site-packages \ flask \ app.py ", строка 1612, в full_dispatch_request rv = self.dispatch_request () Файл "c: \ users \ jason.virtualenvs \ backend-foekiio5 \ lib \ site-packages \ flask \ app.py ", строка 1598, в dispatch_request возвращает файл self.view_functionsrule.endpoint" C: \ projects \ Python Projects \ three-back \ backend \ src \ auth.py ", строка 101, в декорированном возвращении f (* args,** kwargs) Файл "C: \ projects \ Python Projects \ three-back \ backend \ src \ main.py", строка 41, в стратегии add_strategy = Стратегия (** sent_strategy.data, creation_by = "HTTP post request")Ошибка типа: init () отсутствует 3 обязательных позиционных аргумента: 'startDate', 'endDate' и 'голосованияDeadline' 127.0.0.1 - - [16 / May / 2018 20:43:44] "POST / стратегииHTTP / 1,1 "500 -