2012-04-29 10 views
1

Djangoテンプレートで表示されません。 mytags.pyのシンプルグラバターは、私はこのサイトからの参照を取っ

内容/ gravatar.html

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

タグがprofile.htmlテンプレートファイルに利用されているテンプレート/ templatetagsの

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

内容。

しかし、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> 
+0

はhttps://github.com/nvie/django-gravatarで試しましたが、実際のグラバターではなく代替画像が読み込まれます。 – John

+0

は最終的にgithub.com/nvie/django-gravatarと連携しました。 – John

答えて

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

Safeテンプレートフィルタは、私は画像のURLをしようとすると、それは代替画像にリダイレクトして、グラバターは、ハッシュ化された電子メールアドレスを認識しない自動エスケープ&amp;

+0

安全なフィルタを使用しても変更はありません。 – John

+0

コードをテストし、404というデフォルトのURLにリダイレクトされました。私はアバターを持っていないので大丈夫です – San4ez

0

を防ぎ示しあなたが提供した:http://www.mysite.com/media/images/no-avatar.gif

  • フォールバックを取得するのは正しいですか?あなたは本当のグラバターを期待しましたか?もしそうなら、エラーは何とかハッシュの中にあります。

  • mysite.comは明らかにあなたのサイトではありません。しかし、実際に正しいURLを使用しましたか?

  • ハードコードされたURL:正しいホスト名を使用していますか? settings.pyの正しいMEDIA_URL

+0

私は代替画像を作成しませんでした。私はグラバターが来ることを期待しました – John

+0

はgithub.com/nvie/django-gravatarを試しましたが、フォールバックイメージも読み込んでいます - 大きな青色G – John

+0

あなたはフォールバックイメージを設定しました。それがあなたのイメージURLの「デフォルト」です。私のブラウザにあなたの画像のURLを置くと、それが表示されます。 (そして、URLは失敗するので、あなたのページにグラバターイメージが表示されない理由を説明します)。提案:あなたのURLから 'デフォルト'を削除すると、少なくともgravatarの独自のデフォルト画像が表示されます。それがうまくいくと、gravatar_idについて心配することができます。 –

0

参考文献the doc、常に電子メールを下ろして削除してください。
また、従来の形式の代わりに'http://www.gravatar.com/avatar/'+haseを使用してください。
が その後のコードがあなたのコードについて

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

のように見え、その非常におそらく電子メールのハッシュは何も一致していません。あなたのコードでフォーマットを使って私のアバターを試しましたが、うまくいきます。 Has the email been registered?

関連する問題