Я хотел бы динамично создать миниатюры на основе параметров в URL. Например, http://mysite.com/images/1234/120x45.jpg
создал бы a 120x45
миниатюра для идентификатора изображения 1234
.
Очевидное решение этого состоит в том, чтобы иметь представление django, которое делает следующее:
Это должно "работать", но я обеспокоен производительностью. Мне не нравится идея использовать django для обслуживания статического содержания. Что некоторые другие пути состоят в том, чтобы выполнить эту проблему?
Вам не нужно использовать Django, чтобы использовать статический контент напрямую. Просто попросите свой серверный маршрут 404 запросов на папку изображений к представлению Django, где он разделяет имя файла и генерирует соответствующую эскиз, прежде чем перенаправлять обратно к исходному URL-адресу (который, надеюсь, больше не будет 404).
Что касается другого ответа Django-ImageKit, я не уверен, что это делает что-нибудь, чтобы позволить вам динамически генерировать изображения больших пальцев на основе URL, но я, конечно, рекомендую использовать его для всех функций имеет.
Редактировать:
как для фактической структуры URL, я чувствую себя более типичным /Images/FileName-120x45.jpg
позволит вам легче отфильтровать 404 запросов, которые не имеют ничего общего с Динамическое поколение миниатюры. Скажем, например, что есть тонны 404 ошибок для /Images/original_size_image.jpg
. Вы бы не хотели бы, чтобы те, которые были направлены в Django, и вы могли бы соответствовать именам этого формата только с Regex. [End Edit]
Вы должны быть осторожны, хотя о том, чтобы сообщить кому-либо осознавать эту функцию SPAM вашего приложения Django. Они могут потенциально убить его с бесконечным количеством размера изображений и комбинаций имени файла у их кончиков пальцев. Вам нужно будет поступить, как поставить верхние пределы по этим запросам, например, для перенаправления обратно на 404, если либо измерение больше, чем оригинал, или даже выяснить, как загрузить запросы на несколько измерений одинакового изображения. Может быть, это было то, что вы были, когда вы упомянули «запирание», хотя.
Кроме того, я вижу, что вы пометили Apache, но я очень хотел бы порекомендовать, чтобы вы служили статическому контенту через что-то вроде nginx . Возможно, вы можете отрицать дополнительный накладные расходы динамических запросов изображений, если вы используете статический файловый сервер, который не является полным дерьмом в обслуживании статических файлов.
Проверьте Django ImageKit. http://bitbucket.org/jdriscoll/django-imagekit/wiki/home
Вы можете взять заглянуть на Сорл-миниатюрную документацию . Я использую его практически во всех моих проектах вместе с обслуживающим статическим контентом с NGINX из / Media /
:)