Администратор Django и показывающий изображения миниатюр

Интеллектуальный указатель является изменением RAII. RAII означает, что приобретение ресурса является инициализацией. Интеллектуальный указатель получает ресурс (память) перед использованием и затем выбрасывает его автоматически в деструкторе. Две вещи происходят:

  1. Мы выделяем память , прежде чем мы будем использовать ее, всегда, даже когда мы не чувствуем себя подобно ему - трудно сделать иначе с интеллектуальным указателем. Если этого не происходило, Вы попытаетесь получить доступ к ПУСТОЙ памяти, приводящей к (очень болезненному) катастрофическому отказу.
  2. Мы освобождаем память , даже когда существует ошибка. Никакую память не оставляют, зависая.

, Например, другим примером является сетевой сокет RAII. В этом случае:

  1. Мы открываемся сетевой сокет , прежде чем мы будем использовать его, всегда, даже когда мы не чувствуем себя подобно - трудно сделать это иначе с RAII. При попытке делать это без RAII, Вы могли бы открыть пустой сокет для, сказать соединение MSN. Тогда сообщение как "позволяет, делают оно сегодня вечером" не могло бы быть передано, пользователи не займутся сексом, и Вы могли бы рискнуть увольняться.
  2. Мы закрываемся сетевой сокет , даже когда существует ошибка. Никакой сокет не оставляют, зависая, поскольку это могло бы предотвратить ответное сообщение, "уверенное плохой быть в нижней части" от того, чтобы наносить ответный удар отправителю.

Теперь, как Вы видите, RAII является очень полезным инструментом в большинстве случаев, поскольку он помогает людям заняться сексом.

источники C++ интеллектуальных указателей находятся в миллионах по всей сети включая ответы выше меня.

47
задан Serjik 19 December 2015 в 09:12
поделиться

1 ответ

Это находится в исходном коде для photologue (см. models.py , немного адаптировано для удаления ненужных вещей):

def admin_thumbnail(self):
    return u'<img src="%s" />' % (self.image.url)
admin_thumbnail.short_description = 'Thumbnail'
admin_thumbnail.allow_tags = True

Бит list_display тоже выглядит идентичным, и я знаю, что это работает. Единственное, что мне кажется подозрительным, это ваш отступ - две строки, начинающиеся с image_img в конце вашего кода models.py , должны быть на одном уровне с def image_img (self) : , например:

def image_img(self):
    if self.image:
        return u'<img src="%s" />' % self.image.url_125x125
    else:
        return '(Sin imagen)'
image_img.short_description = 'Thumb'
image_img.allow_tags = True
69
ответ дан 26 November 2019 в 19:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: