рдореБрдЭреЗ рдПрдХ рд╕реНрдерд┐рд░ (STATIC_ROOT рдореЗрдВ) рдлрд╝рд╛рдЗрд▓ рдХреЛ рдердВрдмрдиреЗрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдмрд╛рд╣рд░реА (http://....) рдФрд░ рдореАрдбрд┐рдпрд╛ (MEDIA_ROOT рдореЗрдВ) рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рд╕реНрдерд┐рд░ рдЫрд╡рд┐ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЖрдХрд╛рд░ рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдЪрд╛рд╣реЗ рд╡рд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ, рдереАрдо рдЖрджрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛ)
рдЖрдкрдХреЛ рдХреБрдЫ рд╕реНрдЯреЛрд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ STATIC_ROOT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк 'django.core.files.storage.FileSystemStorage' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдерд╛рди = рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рддрддреНрдХрд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред STATIC_ROOT рдФрд░ base_url = рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред STATIC_URL, рдХреГрдкрдпрд╛ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдЬрд╛рд░реА рд░рдЦреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдирд╣реАрдВ рд╣реИ рдХреАрдбрд╝рд╛ред
https://github.com/mariocesar/sorl-thumbnail/blob/master/sorl/thumbnail/base.py#L100 рдХреЗ рдХрд╛рд░рдг, рдкрд╛рдВрдЪ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рдж рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрдВрдбрд╛рд░рдг рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рд╕реНрдерд┐рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЕрдВрдЧреВрдареЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХрд╛рд░рдг StackOverflow рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдореМрдХрд╛? get_thumbnail()
рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╕реНрдЯрдо рд╕реНрдЯреЛрд░реЗрдЬ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд╛рд╕ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред
рдпрд╣рд╛рдВ рдПрдХ рдкреИрдЪ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ https://github.com/marcinn/sorl-thumbnail/commit/61557b41169f0656063c557735ef62908a5fcaab
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ thumbnail.url
рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рдиреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм cached.url
рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ /static/ рдХреЗ рдмрдЬрд╛рдп /static/
/media/
рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрджрд░ рдХреБрдЫ рдФрд░ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ (2) : рднрдВрдбрд╛рд░рдг рдХреЛрдб deserializing рдореЗрдВ рдПрдХ рдбрд┐рдЬрд╛рдЗрди рд╕рдорд╕реНрдпрд╛ рд╣реИ - рднрдВрдбрд╛рд░рдг рд╡рд░реНрдЧ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореМрдЬреВрджрд╛ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд╕рд╛рде рддрддреНрдХрд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ - sorl.thumbnail рд╕реНрдЯреЛрд░реЗрдЬ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд╡рдпрдВ рдмрдирд╛рддрд╛ рд╣реИ (рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛)ред рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо FileSystemStorage рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд╕реНрдЯрдо рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕реЗ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдИ рднреА рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдердВрдмрдиреЗрд▓ рдЬреЗрдирд░реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдПрдХ рдХрд╕реНрдЯрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдЯреИрдЧ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ:
from django.core.files.storage import FileSystemStorage
from django.conf import settings
from django import template
from sorl.thumbnail.templatetags.thumbnail import ThumbnailNode
register = template.Library()
class StaticThumbnailStorage(FileSystemStorage):
def __init__(self, *args, **kw):
super(StaticThumbnailStorage, self).__init__(
*args, location='/path/to/custom/static/'
base_url=settings.STATIC_URL, **kw)
storage = StaticThumbnaikStorage()
class StaticThumbnailNode(ThumbnailNode):
def _get_thumbnail(self, file_, geometry, **options):
options['storage'] = storage
return super(StaticThumbnailNode, self)._get_thumbnail(
file_, geometry, **options)
@register.tag
def static_thumbnail(parser, token):
return StaticThumbnailNode(parser, token)
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣рд╛рдВ рдПрдХ рдкреИрдЪ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ https://github.com/marcinn/sorl-thumbnail/commit/61557b41169f0656063c557735ef62908a5fcaab
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐
thumbnail.url
рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдорд╛рдиреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдмcached.url
рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ /static/ рдХреЗ рдмрдЬрд╛рдп/static/
/media/
рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрджрд░ рдХреБрдЫ рдФрд░ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИредрд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ (2) : рднрдВрдбрд╛рд░рдг рдХреЛрдб deserializing рдореЗрдВ рдПрдХ рдбрд┐рдЬрд╛рдЗрди рд╕рдорд╕реНрдпрд╛ рд╣реИ - рднрдВрдбрд╛рд░рдг рд╡рд░реНрдЧ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореМрдЬреВрджрд╛ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд╕рд╛рде рддрддреНрдХрд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ - sorl.thumbnail рд╕реНрдЯреЛрд░реЗрдЬ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд╡рдпрдВ рдмрдирд╛рддрд╛ рд╣реИ (рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛)ред рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо FileSystemStorage рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрд╕реНрдЯрдо рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕реЗ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдИ рднреА рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдердВрдмрдиреЗрд▓ рдЬреЗрдирд░реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдПрдХ рдХрд╕реНрдЯрдо рдЯреЗрдореНрдкрд▓реЗрдЯ рдЯреИрдЧ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ:
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред