1

我参考了这个网站: http ://tomatohater.com/2008/08/16/implementing-gravatar-django/

我有一个配置文件应用程序,其中有一个带有 mytags.py 的 templatetags 目录。

mytags.py 的内容

import urllib, hashlib
from django import template

register = template.Library()

@register.inclusion_tag('templatetags/gravatar.html')
def show_gravatar(email, size=48):
    default = "http://www.mysite.com/media/images/no-avatar.gif"

    url = "http://www.gravatar.com/avatar.php?"
    url += urllib.urlencode({
        'gravatar_id': hashlib.md5(email).hexdigest(),
        'default': default,
        'size': str(size)
    })
    return {'gravatar': {'url': url, 'size': size}}

模板/templatetags/gravatar.html 的内容

<img src="{{ gravatar.url }}" width="{{ gravatar.size }}" height="{{ gravatar.size }}" border="0" />

该标签在 profile.html 模板文件中使用。

但是头像没有显示在profile.html中。然而消息来源显示

<div class="gravatar">
<a href="">
<img src="http://www.gravatar.com/avatar.php?default=http%3A%2F%2Fwww.mysite.com%2Fmedia%2Fimages%2Fno-avatar.gif&amp;size=48&amp;gravatar_id=5d1b0b64499475516bd9c051aa7f3560" width="48" height="48" border="0" />
</a></div>
4

3 回答 3

0
<img src="{{ gravatar.url|safe }}" width="{{ gravatar.size }}" height="{{ gravatar.size }}" border="0" />

Safe模板过滤器防止自动转义&amp;

于 2012-04-29T20:00:20.613 回答
0

参考文档,总是降低并删除电子邮件。
此外,使用'http://www.gravatar.com/avatar/'+hash而不是旧格式。
然后代码看起来像

url = 'http://www.gravatar.com/avatar/%s?%s" % (
    hashlib.md5(email.strip().lower()).hexdigest(),  
    urllib.urlencode({'default': default, 'size': size}))

对于您的代码,电子邮件哈希很可能与任何内容都不匹配。我使用您代码中的格式尝试了我的头像,效果很好。邮箱注册了吗?

于 2012-04-30T05:52:46.827 回答
0

当我尝试使用图片 URL 时,gravatar 无法识别散列的电子邮件地址,因此它会重定向到您提供的备用图片:http ://www.mysite.com/media/images/no-avatar.gif

  • 你得到后备是正确的吗?或者你期待一个真正的 gravatar 吗?如果是这样,则错误以某种方式存在于哈希中。

  • mysite.com 显然不是您的网站。但是,您实际上是否使用了正确的 URL?

  • 硬编码 URL:您使用的主机名是否正确?MEDIA_URL你的正确settings.py吗?

于 2012-04-29T20:16:49.033 回答