рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ Google рдкрд┐рдХрд╛рд╕рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ Django рдлреЛрдЯреЛ рдЧреИрд▓рд░реА



рд╣рд╛рдп рд╣рдмреНрд░рд▓реВрдбреАред

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ Google Picasa рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдлреЛрдЯреЛ рдЧреИрд▓рд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдкрд░ рдлреЛрдЯреЛ рдЧреИрд▓рд░реА рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдкреАрдПрдЪрдкреА рдХреЗ рд▓рд┐рдП рдЗрд╕реА рддрд░рд╣ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдмреЗ рдкрд░ рдерд╛, Django рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рдХреМрди рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд╕реНрд╡рд╛рдЧрдд рд╣реИред



рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдлреЛрдЯреЛ рджреАрд░реНрдШрд╛рдУрдВ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЬрди рдХреА рдкрд╕рдВрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рд╣реЛ рдЧрдпрд╛ред рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдХрд╛рдлреА рд╕рд░рд▓ рдереАрдВ: рдПрд▓реНрдмрдореЛрдВ рдореЗрдВ рдлрд╝реЛрдЯреЛ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рдирд╛, рд╕рдВрдкреВрд░реНрдг рдЧреИрд▓рд░реА рдХреЛ рдПрд▓реНрдмрдо рдердВрдмрдиреЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рд╕рд╛рде рд╣реА рдПрд▓реНрдмрдореЛрдВ рдореЗрдВ рдлрд╝реЛрдЯреЛ рджрд┐рдЦрд╛рдирд╛ред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдЧреЗ рдкрдврд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреБрд░рдВрдд рд╕рдорд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо ред

рдкрд░рд┐рдЪрдп


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Django рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рддреИрдпрд╛рд░ рдЧреИрд▓рд░реА рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдпрд╣ рдпрд╣рд╛рдВ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИ ред рдЙрд╕реА рд╕рдордп, рдлрд╝реЛрдЯреЛ, рдердВрдмрдиреЗрд▓, рдирд┐рд░реНрдорд┐рдд рдХреИрд╢ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╡рд┐рдзрд┐ рд╕рднреА рдХрд╛рд▓реЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП Google рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд░ рд▓реЛрдб рдФрд░ рдмрдЪрдд рдХреА рдЬрдЧрд╣ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░реВрдБрдЧрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХреЛрдИ рднрд╛рд░ рдФрд░ рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдП рд╣реИрдВ, рдЬреЛ рдореБрдЭреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд╕рдВрддреБрд╖реНрдЯ рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдШреЗрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЖрджрд┐ред

Google рдкрд┐рдХрд╛рд╕рд╛, рдХрдИ Google рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рддрд░рд╣, рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рдПрдкреАрдЖрдИ рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:


рдЖрд╡реЗрджрди рд╡рд┐рд╡рд░рдг


рдЪрд▓реЛ рд╣рдорд╛рд░реЗ рдкрд┐рдХрд╕реИрдЧреНрд▓рд┐рд╕рд░рд╛рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдЖрд╡реЗрджрди рдЙрдирдХреЗ рд▓рд┐рдП рджреЛ рд╡рд┐рдЪрд╛рд░реЛрдВ, рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдЧрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреНрд░рдорд╢рдГ рдПрд▓реНрдмрдо рдореЗрдВ рдПрд▓реНрдмрдо рдФрд░ рдлрд╝реЛрдЯреЛ рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ:

from gdata.photos.service import PhotosService def get_albums(): pws = PhotosService() uf = pws.GetUserFeed(user = settings.PICASAGALLERY_USER) feed = '{uri}&thumbsize={thumbsize}'.format( uri = uf.GetAlbumsUri(), thumbsize = ALBUM_THUMBSIZE ) print feed return pws.GetFeed(feed).entry def get_photos(album): feed = '{uri}&imgmax={imgmax}&thumbsize={thumbsize}'.format( uri = album.GetPhotosUri(), imgmax = PHOTO_IMGMAXSIZE, thumbsize = PHOTO_THUMBSIZE ) return PhotosService().GetFeed(feed).entry 


рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рднреА)ред рд╢рд╛рдпрдж рдпрд╣ рдЕрдиреБрд░реЛрдз рдкрд░ рджрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ:

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ settings.py рдореЗрдВ рд░рдЦреЗрдВ:
 # Picasagallery settings PICASAGALLERY_USER = 'your_email' PICASAGALLERY_PHOTO_THUMBSIZE = '128' PICASAGALLERY_PHOTO_IMGMAXSIZE = '1024' PICASAGALLERY_ALBUM_THUMBSIZE = '160c' 


Django рд╢реЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рдЖрдк рдЗрд╕ рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 >>> from picasagallery.utils import get_albums, get_photos >>> my_first_album = get_albums()[0] >>> print my_first_album.title.text #   >>> print my_first_album.media.thumbnail[0].url # url    https://lh3.googleusercontent.com/-aWPQC60j9zQ/TwCXlTD6CtE/AAAAAAAAAJk/E90Hu9OPiyg/s160-c/FotoLife.jpg >>> my_first_photo = get_photos(my_first_album)[0] >>> print my_first_photo.media.thumbnail[0].url # url     https://lh3.googleusercontent.com/-3Hb7VwUTBNg/TwCXlXqdAQI/AAAAAAAAAH8/v8ecBJtjV6k/s128/261799.jpg >>> print my_first_photo.content.src # url   ,      imgmax 


My_first_album.media.thumbnail рд╕реВрдЪреА рдореЗрдВ рдлрд╝реЛрдЯреЛ рдХреЗ рдердВрдмрдиреЗрд▓ рд╣реЛрддреЗ рд╣реИрдВ; рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдЕрдВрдЧреВрдареЗ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред

рдХрд┐рд╕реА рдПрд▓реНрдмрдо рдХрд╛ рдердВрдмрдиреЗрд▓ рдЙрд╕рдХреА рдореБрдЦреНрдп рддрд╕реНрд╡реАрд░ рдХрд╛ рдПрдХ рдердВрдмрдиреЗрд▓ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдПрд▓реНрдмрдо рдореЗрдВ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдкрд╣рд▓реА рддрд╕реНрд╡реАрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ Google Picasa рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдПрд▓реНрдмрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореБрдЦреНрдп рдлреЛрдЯреЛ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рдорд┐рд▓реА, рдЕрдЧрд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдмрддрд╛рдПрдВред

рдХреА рдкреНрд░рд╕реНрддреБрддрд┐



рд╣рдо рдХреНрд░рдорд╢рдГ рдЧреИрд▓рд░реА рдФрд░ рдПрд▓реНрдмрдо рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рджреЛ рдЕрднреНрдпрд╛рд╡реЗрджрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 from django.shortcuts import render from django.http import Http404 from picasagallery.utils import get_albums, get_photos def gallery(request): albums = get_albums() return render(request, 'picasagallery/gallery.html', {'albums': albums}) def album_list(request, album_id): for album in get_albums(): if album.gphoto_id.text == album_id: photos = get_photos(album) return render(request, 'picasagallery/album.html', {'photos': photos}) raise Http404() 


рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕


рдЧреИрд▓рд░реА рдЯреЗрдореНрдкрд▓реЗрдЯ:
 {% extends 'base.html' %} {% load extras %} {% load i18n %} {% block head %} <link rel="stylesheet" href="{{ STATIC_URL }}picasagallery/css/base.css" type="text/css" media="screen" charset="utf-8" /> {% endblock %} {% block content %} {% for album in albums %} <div class='album'> <div class='album-head'> <a href="{% url picasagallery.views.album_list album.GetAlbumId %}" > <img class="album-preview" src="{% thumbnail_url album %}"> </a> </div> <div class="album-name"> <a href="{% url picasagallery.views.album_list album.GetAlbumId %}">{{ album.title.text }}</a> </div> </div> {% endfor %} <p> <a href="/media/picasa_gdata.zip">{% trans 'Download source' %}</a> </p> {% endblock %} 


рдПрд▓реНрдмрдо рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ:
 {% extends 'base.html' %} {% load extras %} {% load i18n %} {% block head %} {% include 'picasagallery/pphoto.html' %} <link rel="stylesheet" href="{{ STATIC_URL }}picasagallery/css/base.css" type="text/css" media="screen" charset="utf-8" /> {% endblock %} {% block content %} <a href='{% url picasagallery.views.gallery %}' >{% trans "Back to gallery" %}</a> <p>{% trans "Album:" %} {{ album.title.text }}</p> <div class='gallery'> {% for photo in photos %} <div class='image-preview-div'> <a class='image-preview-link' style='{% thumbnail_style photo %}' rel='gallery-image[pp_gal]' href='{{ photo.content.src }}'> <img class='image-preview-img' style='{% thumbnail_style photo %}' src='{% thumbnail_url photo %}'> </a> </div> {% endfor %} <p> <a href='{{ album.GetHtmlLink.href }}' target='_blank'>{% trans "Show in Google Picasa" %}</a> </p> </div> {% endblock %} 


рдПрд▓реНрдмрдо рдФрд░ рдлреЛрдЯреЛ рдердВрдмрдиреЗрд▓ рдХрд╛ url рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдердВрдмрдиреЗрд▓_url рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓реЗ рдердВрдмрдиреЗрд▓ рдХрд╛ рдпреВрдЖрд░рдПрд▓ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдердВрдмрдиреЗрд▓_рд╕реНрдЯрд╛рдЗрд▓ рдЯреИрдЧ, рдЬреЛ рдлреЙрд░реНрдо рдХреА рдЪреМрдбрд╝рд╛рдИ рдХрд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ : 48; рдКрдВрдЪрд╛рдИ: 48? ' рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
 <img ... /> 

рд╣рдо рдЗрди рдЯреИрдЧ рдХреЛ templatetags рдлрд╝реЛрд▓реНрдбрд░ рдХреА extras.py рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 from django.template import Library register = Library() def get_thumbnail(obj): return obj.media.thumbnail[0] @register.simple_tag def thumbnail_url(obj): return get_thumbnail(obj).url @register.simple_tag def thumbnail_style(obj): thumb = get_thumbnail(obj) return 'width: %spx; height: %spx;' % (thumb.width, thumb.height) 


рдПрд▓реНрдмрдо рдХреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ prettyPhoto рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ:
 {% include 'picasagallery/pphoto.html' %} 

рдореИрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рд░рд╣реВрдВрдЧрд╛, рдЬреЛ рдХреЛрдИ рднреА рдЗрдЪреНрдЫреБрдХ рд╣реИ рд╡рд╣ рд╕реНрд░реЛрдд рдореЗрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИред

рдЦреИрд░, рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдпрд╣ рдХреНрдпрд╛ рд╣реБрдЖ , рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдмрд╛рддред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In139871/


All Articles