django - ce qu'il faut savoir sur sorl-thumbnail
j'utilise sorl-thumbnail pour créer des thumbnails pour mon projet. Je l'implémente seulement dans des modèles et pas dans les modèles ou la vue. Et chacune des vignettes est liée à leur image originale, qui est utilisée par une boîte lumineuse. En tant qu'internaute novice, je voulais savoir, certaines de ses fonctionnalités:
- si l'implémenter seulement dans le
template
est le même, que l'utiliser dans lemodels
ouview
et la création d'une nouvelle vignette pour chacun? - Comment configurer différentes vignettes pour différentes images, comme cela peut être fait dans <!--7?
- comment outrepasser les valeurs par défaut, par exemple: outrepasser la valeur de
Quality
, etc.
et enfin, est-ce une façon correcte de la mettre en œuvre? Tout conseil ou suggestion sera apprécié. Remercier.
html:
{% for photo in photos %}
<div class="thumbnail_container">
<a href="{{MEDIA_URL}}{{photo.image}}" class="gallery" title="{{photo.title}}">
{% thumbnail photo.image "200x200" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}" class="thumbnail">
{% endthumbnail %}
</a>
</div>
{% endfor %}
Edit:
comment réaliser quelque chose comme ça pour les miniatures sorl, ce qui peut être fait en facile-vignettes:
settings.py
THUMBNAIL_ALIASES = {
'': {
'avatar': {'size': (100,100), 'crop': True},
'forum': {'size': (203,103), 'crop':False},
},
}
et puis dans les gabarits je peux juste choisir parmi les alias que j'ai définis dans le settings.py:
<img src="/static/{{forum.image |thumbnail_url:'forum' }}">
ou
<img src="/static/{{forum.image |thumbnail_url:'avatar' }}">
1 réponses
comme beaucoup de choses à django sorl-thumbnail
est implémenté à la fois simplement et élégamment, et la façon dont vous l'utilisez est correcte.
à chaque fois sorl-thumbnail
est demandé pour une nouvelle vignette, il vérifie pour voir si une existe dans son cache:
- S'il en existe un, celui-ci est retourné.
- si ce n'est pas le cas, un nouveau est généré et stocké, puis retourné.
ainsi, une cache de vignettes est générée selon les besoins. La clé, le magasin de valeur est un des moyens de stockage de vignettes qui les rend rapide pour rechercher et récupérer. En utilisant les étapes ci-dessus les vignettes seront générées et stockées comme elles sont demandées par vos utilisateurs.
génération de vignettes' sur demande ' le processus fonctionne bien, alors que les images sont ajoutées graduellement à votre site web, les vignettes pour les nouvelles images seront créées au besoin, et les vignettes pour les images plus anciennes récupérées à partir du magasin.
Pour stocker les vignettes Sorl-thumbnail
utilise une combinaison d'un base de données et mémoire cache. La base de données garantit que toutes les vignettes sont sauvegardées si l'application et / ou le serveur web sont redémarrés. Les vignettes seront ensuite chargées dans le cache mémoire (vous l'avez deviné) à la demande, ce qui assurera des temps de chargement rapides pour l'utilisateur.
Pour répondre à tes questions:
- si l'implémenter seulement dans le modèle est la même chose, comme l'utiliser dans les modèles ou dans la vue et créer une nouvelle vignette pour chacun?
il n'est pas possible de générer les vignettes dans les modèles ou les vues, car elles sont générées à la demande, comme l'utilisateur les demande. C'est très efficace. Je suppose que vous pourriez écrire un script pour demander toutes les vignettes, qui a été exécuté chaque nuit pour s'assurer que toutes les vignettes sont générées, bien que cela ne soit probablement pas nécessaire.
- comment configurer différentes vignettes pour différentes images, comme cela peut être fait dans easy_thumbnail?
Toute la configuration se fait dans le {% thumbnail %}
tag, si des vignettes différentes pour la même image sont générées, elles seront stockées dans la clé, valeur stocker séparément.
- comment outrepasser les valeurs par défaut, par exemple: outrepasser la valeur de la qualité, etc
Il y a une liste de paramètres ici: http://sorl-thumbnail.readthedocs.org/en/latest/reference/settings.html, ceux-ci devraient tous être mis dans le settings.py
fichier. La Qualité est définie à 95 par défaut, ce qui est assez élevé.
Modifier-définir la qualité jpeg dans settings.py
...
THUMBNAIL_QUALITY = 60
THUMBNAIL_PROGRESSIVE = False
...
Ces deux ajouts, n'importe où dans le settings.py
fichier pour votre projet, réduira la qualité jpeg pour les vignettes à 60, et désactiver la création de JPEG progressifs.
Edit - miniature alias
il n'y a pas de support intégré pour les alias des vignettes dans sorl-thumbnail
. Probablement la façon la plus facile de les mettre en œuvre est comme de petits gabarits de sous, qui peuvent ensuite être chargés dans vos gabarits principaux.
donc un modèle de page, pourrait ressembler à quelque chose comme:
....
{% load thumbnail %}
....
<h3>Recent image uploads:</h3>
{% for item in recentUploads %}
{% include "bigThumbnail.html" %}
{% endfor %}
<h3>Older image uploads</h3>
{% for item in oldUploads %}
{% include "smallThumbnail.html" %}
{% endfor %}
....
les gabarits pour les vignettes seraient stockés comme des dossiers séparés dans votre répertoire de gabarit et pourraient regarder quelque chose comme:
bigThumbnail.html
{% thumbnail item.image "100x100" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
petitthumbnail.html
{% thumbnail item.image "40x40" crop="center" as im %}
<img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
Dans chacun des sous-modèles, tous les paramètres de votre 'alias' peut être faite. Il serait également possible de créer une balise template supplémentaire pour lire ces attributs à partir de settings.py
, c'est ce que easy_thumbnail
Oui, mais il faudrait beaucoup de programmation pour obtenir les résultats des deux petits modèles ci-dessus.
si vous avez d'autres questions concernant sorl-thumbnail
, je serais heureux de vous aider avec eux.