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}}

template / templatetags/gravatar.htmlのコンテンツ

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

タグはprofile.htmlテンプレートファイルで使用されます。

ただし、Gravatarは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

画像の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 に答える
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 に答える