django与gravatar结合显示头像标志图片

摘要: 见过很多BLOG的评论系统都采用了gravatar 生成的全球唯一头像认证的图标。可以根据EMAIL, USER 自动获取到。最近自己在做另外一个系统,也想采用一下。于是就注册了 gravatar 账号。注册的过程很简单:1. 登陆http://en.gravatar.com/  输入你的EMAIL 然后点击 "Get your gravatar" 2. 到你的邮箱接收激活邮件,并设定密码,登陆。3. 点击 "add a new image" 连接,然后,你可以从互联网,或者从硬盘上选择你的头像照片,并裁剪到适合大小。4.在选择头像级别的时候,一定选择G , 这样在任何网站都可以显示(G 普通级、PG 辅导级、R 和 X 为限制级,一般不黄不暴力的选G就行了)

见过很多BLOG的评论系统都采用了gravatar 生成的全球唯一头像认证的图标。可以根据EMAIL, USER 自动获取到。最近自己在做另外一个系统,也想采用一下。于是就注册了 gravatar 账号。注册的过程很简单:
1. 登陆http://en.gravatar.com/ 输入你的EMAIL 然后点击 "Get your gravatar"
2. 到你的邮箱接收激活邮件,并设定密码,登陆。
3. 点击 "add a new image" 连接,然后,你可以从互联网,或者从硬盘上选择你的头像照片,并裁剪到适合大小。
4.在选择头像级别的时候,一定选择G , 这样在任何网站都可以显示(G 普通级、PG 辅导级、R 和 X 为限制级,一般不黄不暴力的选G就行了)

在DJANGO中使用 gravatar
方法一:官方或google 开源提供了一个 用tag 实现的方式,这种方式注意tag 的位置,要放到对的地方,要在APP下,比如我的工程:


from django import template
from django.conf import settings
from django.contrib.auth.models import User
from django.utils.hashcompat import md5_constructor
from django.utils.html import escape
import hashlib
import urllib


GRAVATAR_URL_PREFIX = getattr(settings, "GRAVATAR_URL_PREFIX", "http://www.gravatar.com/")
GRAVATAR_DEFAULT_IMAGE = getattr(settings, "GRAVATAR_DEFAULT_IMAGE", "")

register = template.Library()

def get_user(user):
    if not isinstance(user, User):
        try:
            user = User.objects.get(username=user)
        except User.DoesNotExist:
            # TODO: make better? smarter? strong? maybe give it wheaties?
            raise Exception, "Bad user for gravatar."
    return user

def gravatar_for_email(email, size=60):
    url = "%savatar/%s/?" % (GRAVATAR_URL_PREFIX, md5_constructor(email).hexdigest())
    url += urllib.urlencode({"s": str(size), "default": GRAVATAR_DEFAULT_IMAGE})
    return escape(url)

def gravatar_for_user(user, size=60):
    user = get_user(user)
    return gravatar_for_email(user.email, size)

def gravatar_img_for_email(email, size=60):
    url = gravatar_for_email(email, size)
    print url
    return """""" % (escape(url), size, size)

def gravatar_img_for_user(user, size=60):
    user = get_user(user)
    url = gravatar_for_user(user)
    return """"Avatar""" % (escape(url), user.username, size, size)

def gravatar(user, size=60):
    # backward compatibility
    return gravatar_img_for_user(user, size)

@register.filter
def get_gravatar(email):
    return "http://www.gravatar.com/avatar/" + hashlib.md5(email.lower()).hexdigest()+'?s=60'

register.simple_tag(gravatar)
register.simple_tag(gravatar_for_user)
register.simple_tag(gravatar_for_email)
register.simple_tag(gravatar_img_for_user)
register.simple_tag(gravatar_img_for_email)



在页面的模板中这样调用:

{% load gravatar_tags %}


方法二,了解了garvatar生成规律,就是把 email 的小写 采用加密方式实现生成一个字符串,作为头像图片的文件名。知道这个规律就好办了。自己可以这样实现:
def get_gravatar(email):
    return "http://www.gravatar.com/avatar/" + hashlib.md5(email.lower()).hexdigest()+'?s=60'


这种方式就任由你发挥了,可以写成filter,也可以写成tag 等。

上一篇: 文档在线阅读器 java 版本参考资料
下一篇: Django Form 自定义试用笔记(附工程源码下载)
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号