django

2010-11-02 5 views
6

में gravatar का उपयोग करके मैं अपने django ऐप में gravatars का उपयोग करने के लिए तैयार हूं।django

cw/ 
    templatetags/ 
     __init.py__ 
     gravatar.py 
    views.py 
    ... 

gravatar.py

from django import template 
import urllib, hashlib 

register = template.Library() 

class GravatarUrlNode(template.Node): 
def __init__(self, email): 
    self.email = template.Variable(email) 

def render(self, context): 
    try: 
     email = self.email.resolve(context) 
    except template.VariableDoesNotExist: 
     return '' 

    default = "/site_media/img/defaultavatar.jpg" 
    size = 40 

    gravatar_url = "http://www.gravatar.com/avatar/" + hashlib.md5(email.lower()).hexdigest() + "?" 
    gravatar_url += urllib.urlencode({'d':default, 's':str(size)}) 

    return gravatar_url 

@register.tag 
def gravatar_url(parser, token): 
    try: 
     tag_name, email = token.split_contents() 

    except ValueError: 
     raise template.TemplateSyntaxError, "%r tag requires a single argument" % token.contents.split()[0] 

    return GravatarUrlNode(email) 

होता है और cw के टेम्पलेट्स में से एक में मैं करने की कोशिश की: आवेदन cw में मैं निम्नलिखित वास्तुकला के साथ एक templatetags निर्देशिका बनाई

{% load gravatar %} 

लेकिन मुझे मिलता है:

'gravatar' is not a valid tag library: Template library gravatar not found, tried django.templatetags.gravatar,django.contrib.admin.templatetags.gravatar` 

मैं Django 1.2.1 अजगर 2.6 चलाने के लिए और मेरी settings.py में:

TEMPLATE_LOADERS = ( 
'django.template.loaders.filesystem.load_template_source', 
'django.template.loaders.app_directories.load_template_source', 
'django.template.loaders.eggs.load_template_source', 
) 
TEMPLATE_CONTEXT_PROCESSORS = ( 
"django.contrib.auth.context_processors.auth", 
"django.core.context_processors.debug", 
"django.core.context_processors.auth", 
"django.core.context_processors.request", 
"django.core.context_processors.i18n", 
"django.core.context_processors.media", 
"django.contrib.messages.context_processors.messages", 
) 

संपादित करें: http://tomatohater.com/2008/08/16/implementing-gravatar-django/

+0

आप अपने इंस्टॉल किए गए एप्लिकेशन के लिए CW जोड़ा है किया जाना चाहिए? – zsquare

+0

@zsquare: हाँ मैंने लिंक के लिए – Mermoz

+0

+ किया था! धन्यवाद! – bharal

उत्तर

2

तो समाधान मैं कर दिया है: मैं इस अन्य कार्यान्वयन neater है कि मिल गया है

proj/ 
    __init__.py 
    lib/ 
     __init__.py 
     templatetags/ 
      __init.py__ 
      common_tags.py 
: एक lib निर्देशिका बनाने के द्वारा अपने सभी आवेदनों बीच gravatar टेम्पलेट्स साझा करने के लिए मिल गया है

और मेरे इंस्टॉल किए गए एप्लिकेशन

5

आपकी समस्या को जोड़ने lib यहाँ है:

cw/ 
    templatetags/ 
     __init.py__ <<< 
     gravatar.py 
    views.py 
    ... 

यह __init__.py नहीं __init.py__