Django обрабатывает несуществующие ссылки на уровне шаблона - PullRequest
0 голосов
/ 12 ноября 2010

Как следует из названия.Я формирую URL изображения в моем шаблоне.Иногда изображения там нет.У меня есть изображение по умолчанию для отображения в таких случаях.

Но как мне справиться с этим делом на уровне шаблона.Возможно написать фильтр?Есть ли другие способы?

Пока:

...
{% for m in movies %}
    <img width="54" height="74" src="/site_media/images/{{ m.id }}.jpg"></img>
{% endfor %}
...

1 Ответ

2 голосов
/ 12 ноября 2010

Да, вы можете написать свой собственный фильтр, который бы разрешил путь к носителю по абсолютному пути, а затем посмотреть, есть ли файл в этом месте.в худшем случае при каждом запросе диск будет прочитан неизвестное количество раз.Если у вас несколько серверов, на каждом сервере должна быть копия всех изображений.Если изображения загружаются или создаются пользователем во время работы системы, их необходимо распространять.Если вы пойдете по этому пути, вы можете улучшить это, кэшируя результат поиска с помощью стандартного механизма кэширования.

Если подумать, почему бы вам не сохранить изображения на модели сImageField?Из вашего примера мне кажется, что у вас есть одно изображение на первичный ключ, поэтому имеет смысл использовать ImageField, если у вас нет других ограничений.Если вы сделаете это поле необязательным, возможно, вы сможете сделать что-то вроде этого:

<img src="{{ m.get_image_url|default:"/site_media/images/missing_image.jpg" }}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...