django与gravatar结合显示头像标志图片
By:Roy.LiuLast updated:2012-08-22
见过很多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下,比如我的工程:
在页面的模板中这样调用:
方法二,了解了garvatar生成规律,就是把 email 的小写 采用加密方式实现生成一个字符串,作为头像图片的文件名。知道这个规律就好办了。自己可以这样实现:
这种方式就任由你发挥了,可以写成filter,也可以写成tag 等。
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 """""" % (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 等。
From:一号门
Previous:文档在线阅读器 java 版本参考资料
COMMENTS