Я новичок в django (и вообще программировании), и я пытаюсь создать расширение для расширений. Это расширение отображает полное имя пользователя в столбце. Код работает по большей части, однако я не понимаю, что делает переменная состояния в этом методе.Что означает «состояние» в отношении приложений Django?
# renders column to display
def render_data(self, state, review_request):
# returns user's fullname (or username if fullname does not exist)
user = review_request.submitter
return user.get_full_name() or user.username
Этот код работает, но когда я удалить «состояние» аргумент поля отображается «None» вместо FULLNAME пользователя. Я пробовал смотреть в Интернете, но я не мог найти объяснения того, что делает эта переменная.
Я даже не звоню в мой метод, но все равно влияет на результат.
Мне не нравится иметь код, который я не совсем понимаю (сложнее отладить), так может кто-то пролить свет на это?
То, что я думаю, что это означает
Я думаю, что государство относится к экземпляру объекта. В этом случае будет view_request, для которого выполняется полное имя. Без этого экземпляра один запрос на проверку не может быть отделен от всех них. Я до сих пор не знаю, как это влияет на код, даже если я его не называю.
Редактировать: C14L был прав, я переименовал состояние в foobar, и мой код все еще функционировал должным образом. Я выкопал немного больше в source кода djblets/django, где он вызывает функцию.
rendered_data = self.render_data(state, obj)
В коде, который вы отправили, 'state' вообще не используется. Но, если вы его удалите, то второй аргумент будет рассмотрен как 'review_request'. Но эта функция называется, ожидая, что 'review_request' станет третьим аргументом. Вы не можете просто изменить количество или порядок аргументов, потому что вызывающие не знают об этом. Попробуйте переименовать 'state' в' foobar', и функция будет работать по-прежнему. – C14L
Спасибо! Переименование состояния в foobar не изменило выход. Мне может просто нужно сохранить какой-то «заполнитель», чтобы съесть второй аргумент. Было бы непитоновым просто держать там местозаполнитель? Или я должен попытаться найти обходное решение? – MTTT
Также вы можете отправить свой комментарий в качестве ответа, так как он отвечает на мой вопрос. – MTTT