2012-04-29 6 views
1

장고 템플릿에 표시되지. mytags.py의간단한 Gravatar에 내가이 사이트에서 참조했다

내용/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

Has the email been registered?는 https://github.com/nvie/django-gravatar와 그것을 시도하지만 대체 이미지가 아닌 실제 Gravatar에로드합니다. – John

+0

마침내 github.com/nvie/django-gravatar와 함께 작업하게되었습니다. – John

답변

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

Safe 템플릿 필터를 방지 보여줍니다 자동 탈출 나는 그것이 대체 이미지로 리디렉션 때문에, 해시 된 이메일 주소를 인식하지 못하는, Gravatar에 이미지 URL을하려고하면 &amp;

+0

안전 필터를 사용한 후에도 변경되지 않습니다. – John

+0

난 당신의 코드를 테스트하고 내가 설정을 대체 이미지를 일부러 더 아바타 – San4ez

0

을 당신이 제공 한 : http://www.mysite.com/media/images/no-avatar.gif

  • 대체물을 얻는 것이 맞습니까? 아니면 진짜 gravatar을 기대 했습니까? 그렇다면 오류는 어떻게 든 해시에 있습니다.

  • mysite.com은 분명히 당신의 사이트가 아닙니다. 하지만 실제로 올바른 URL을 사용 했습니까?

  • 하드 코딩 된 URL을 : 올바른 호스트 이름을 사용하고 있습니까? settings.py의 올바른 MEDIA_URL은 무엇입니까?

+0

이 없기 때문에 괜찮아 (404)이다 default' URL이'로 재 지정되었다. 나는 – John

+0

시도 github.com/nvie/django-gravatar을 comeup하기 위해 Gravatar에 기대뿐만 아니라로드 이미지 폴백 (fallback) - 큰 G – John

+0

블루 당신은 * * 설정 않은 대체 이미지를. 이것이 이미지 URL의 '기본'URL입니다. 그리고 그것은 브라우저에 이미지의 URL을 넣으면 나타나는 것입니다. URL이 실패하여 페이지에 gravatar 이미지가 표시되지 않는 이유를 설명합니다. 제안 : 귀하의 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})) 

처럼 코드에 대해 고도의 아마 이메일 해시 아무것도 일치하지 않습니다 보인다. 코드에서 형식을 사용하여 아바타를 시도했지만 제대로 작동합니다.