Django - Получить граватар из поля зрения

Я использую django-gravatar в шаблонах для отображения аватаров моих пользователей.

Теперь я хочу получить URI аватара из представления.
Я попытался использовать теги функции тега шаблона, например

from gravatar import templatetags
_get_gravatar_id('[email protected]')
# or
gravatar_for_email('[email protected]')

Но функции не определены
Как я могу получить к ним доступ?


person Pierre de LESPINAY    schedule 02.05.2012    source источник


Ответы (3)


Вы должны импортировать их.

from gravatar.templatetags.gravatar import _get_gravatar_id, gravatar_for_email
person DrTyrsa    schedule 02.05.2012
comment
_get_gravatar_id() нельзя импортировать (может быть, приватным), но я буду использовать gravatar_for_email(), потому что он работает. Спасибо - person Pierre de LESPINAY; 02.05.2012

Не похоже, что этот проект предоставляет URL-адрес в python. Он предоставляет только эти теги.

Если вам действительно нужен URL-адрес изображения в python, его несложно создать самостоятельно. На сайте Gravatar есть инструкции по его созданию, но в основном:

from django.utils.hashcompat import md5_constructor

email_hash = md5_constructor(email.strip().lower()).hexdigest()
url = "http://www.gravatar.com/avatar/%s" % email_hash
person Sionide21    schedule 02.05.2012
comment
Так как я уже пользуюсь этой библиотекой, то хотел воспользоваться уже проделанной работой и постараться не повторяться - person Pierre de LESPINAY; 02.05.2012

Я также хотел создавать визуально приятные, абстрактные, пользовательские изображения профиля пользователя. С ответом Sionade21 в качестве моего руководства я реализовал его следующим образом. Мне пришлось изменить ответ Sionade21, потому что hashcompat устарел в версии 1.5.

Просмотры.py:

from hashlib import md5

def my_view(request):
    email_hash = md5(my_user.email.strip().lower()).hexdigest()
    avatar_url = "http://www.gravatar.com/avatar/%s" % email_hash + 
                 "?s=35&d=identicon&r=PG"

Шаблон(ы):

<img src={{ avatar_url; }}</img>

Это сработало отлично.

Например: http://www.gravatar.com/avatar/7c40983cf4dd3b13108bc427025326c0?s=35&d=identicon&r=PG

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

person user2916527    schedule 22.12.2013