django-gravatar 使用用户信息生成头像(gravatar 加速)

2023-02-18 10:56:01 浏览数 (1)

django-gravatar

A lightweight django-gravatar app. Includes helper methods for interacting with gravatars outside of template code.

If you like this library and it's saved you some time, please consider supporting further development with a Gittip donation!

Features

  • Helper methods for constructing a gravatar url and checking an email for an existing gravatar
  • Templatetags for generating a gravatar url or gravatar <img> tag.
  • Full test suite!

Installing

Install from PyPi:

You can pip install the app directly from GitHub:

代码语言:javascript复制
$ pip install git git://github.com/twaddington/django-gravatar.git#egg=DjangoGravatar

Alternatively, you can now install directly from PyPi!

代码语言:javascript复制
$ pip install django-gravatar2

Make sure you install django-gravatar2 as there are several other incompatible django-gravatar libraries available.

Add django_gravatar to your INSTALLED_APPS in settings.py:

代码语言:javascript复制
INSTALLED_APPS = (
    # ...
    'django_gravatar',
)

# django-gravatar
'''
头像风格类型
404:如果没有任何图像与电子邮件哈希无关,则不加载任何图像,而是返回HTTP 404(找不到文件)响应
mp:(神秘人物)一个人的简单卡通风格的轮廓(不随电子邮件哈希值而变化)
identicon:基于电子邮件哈希的几何图案
monsterid:生成的具有不同颜色,面孔等的“怪物”
wavatar:生成的具有不同特征和背景的面孔
retro:生成的令人敬畏的8位街机风格像素化面孔
robohash:具有不同颜色,面部等的生成的机器人
blank:透明的PNG图像(以下为演示目的添加到HTML的边框)
'''
GRAVATAR_DEFAULT_IMAGE = "wavatar"  # 头像风格,一定要填,不填就是默认的头像
GRAVATAR_DEFAULT_SIZE = 48  # 头像大小
GRAVATAR_DEFAULT_SECURE = True  # If True use https, otherwise plain http
GRAVATAR_URL = "http://sdn.geekzu.org/"  # Gravatar http 头像加速域名,链接后面要带 /
GRAVATAR_SECURE_URL = "https://sdn.geekzu.org/"  # Gravatar https 头像加速域名,链接后面要带 /

Basic Usage

Use in code:

代码语言:javascript复制
from django_gravatar.helpers import get_gravatar_url, has_gravatar, get_gravatar_profile_url, calculate_gravatar_hash

url = get_gravatar_url('alice@example.com', size=150)
gravatar_exists = has_gravatar('bob@example.com')
profile_url = get_gravatar_profile_url('alice@example.com')
email_hash = calculate_gravatar_hash('alice@example.com')

Use in templates:

代码语言:javascript复制
{% load gravatar %}

{% gravatar_url user.email 150 %}
# https://secure.gravatar.com/avatar/hash.jpg?size=150

{% gravatar user.email 150 %}
# <img class="gravatar" src="https://secure.gravatar.com/avatar/hash.jpg?size=150" width="150" height="150" alt="" />

{% gravatar user.email 150 "user@example.com" %}
# <img class="gravatar" src="https://secure.gravatar.com/avatar/hash.jpg?size=150" width="150" height="150" alt="user@example.com" />

{% gravatar_profile_url user.email %}
# https://secure.gravatar.com/hash

Configuring

The following options can be configured in your settings.py:

GRAVATAR_URL # Gravatar base url. Defaults to 'http://www.gravatar.com/'

GRAVATAR_SECURE_URL # Gravatar base secure https url. Defaults to 'https://secure.gravatar.com/'

GRAVATAR_DEFAULT_SIZE # Gravatar size in pixels. Defaults to '80'

GRAVATAR_DEFAULT_IMAGE # An image url or one of the following: 'mm', 'identicon', 'monsterid', 'wavatar', 'retro'. Defaults to 'mm'

GRAVATAR_DEFAULT_RATING # One of the following: 'g', 'pg', 'r', 'x'. Defaults to 'g'

GRAVATAR_DEFAULT_SECURE # True to use https by default, False for plain http. Defaults to True

gravatar.com -> 

  • https://en.gravatar.com/site/implement/images/python/
  • http://cn.gravatar.com/site/implement/images/django/
  • http://en.gravatar.com/site/implement/images/

Django Image Requests

Original submission from, and big thanks to Paul Kenjora. Modified and improved by Carly Stambaugh.

代码语言:javascript复制
import hashlib
import urllib
from django import template
from django.utils.safestring import mark_safe
 
register = template.Library()
 
# return only the URL of the gravatar
# TEMPLATE USE:  {{ email|gravatar_url:150 }}
@register.filter
def gravatar_url(email, size=40):
  default = "https://example.com/static/images/defaultavatar.jpg"
  return "https://www.gravatar.com/avatar/%s?%s" % (hashlib.md5(email.lower()).hexdigest(), urllib.urlencode({'d':default, 's':str(size)}))
 
# return an image tag with the gravatar
# TEMPLATE USE:  {{ email|gravatar:150 }}
@register.filter
def gravatar(email, size=40):
    url = gravatar_url(email, size)
    return mark_safe('<img src="%s" height="%d" width="%d">' % (url, size, size))

See Also: django-gravatar project and if you use Python 3 try out libgravatar. Both are third party libraries and not officially supported by Gravatar.

0 人点赞