поэтому меня интересует ошибка сервера, которая возникает только в производстве (когда приложение идентично между производством и разработкой).
Итак, используя Flask-Admin, я отображаю базовый интерфейс CRUD с представлениями модели, которые в основном полагаются на метод модели __repr__ для предоставления удобочитаемой строки в представлении списка. В рабочей среде (новое приложение, те же данные, что и в dev) я получаю сообщение об ошибке сервера, когда метод __repr__ непреднамеренно делает что-то глупое. В разработке такое же глупое поведение игнорируется или остается незамеченным.
Например:
МОДЕЛЬ:
class Author(db.Model):
first_name = db.Column(db.String(50), nullable=True)
middle_name = db.Column(db.String(50), nullable=True)
last_name = db.Column(db.String(50), nullable=True)
# ...
def __repr__():
return '{}'.format(' '.join([self.first_name, self.middle_name, self.last_name])) # EDITED: Checked repository and I did have the arguments correct -- just wrote this off the top of my head.
__repr__() в этом случае вызывает ошибку ТОЛЬКО на сервере (который является wsgi на apache), когда имя, отчество или фамилия равны NULL. Он пытается объединить NULL и String с соединением и, таким образом, вызывает некоторый вариант «ожидаемая строка, полученная NULL».
Но на сервере разработки я никогда не вижу этих ошибок (и никаких предупреждений).
С тех пор я изменил этот метод repr, чтобы проверить имя, отчество и фамилию перед конкатенацией, но я не понимаю, почему ошибка возникает в производстве (приложение wsgi), а не в разработке (сервер flask dev или сервер cherrypi). ).
Итак, есть идеи? Чем отличаются эти две ситуации?
null
строки. - person Wombatz   schedule 06.04.2017.join()
принимает один аргумент, в вашем случае вы даете 3 - person dimmg   schedule 06.04.2017