0

我的網站非常直觀,我想利用網站上的所有用戶頭像,所以我認爲編寫自定義模板標籤是最好的方式。django頭像自定義模板標籤

我的UserProfileUser關聯,並具有profile_pic

我正在使用Django,imagekit,因此ImageModel的進場

class UserProfile(ImageModel): 
    profile_pic = models.ImageField(storage=cloudfiles_storage, 
            upload_to='avatars', 
            default='avatar-blank.jpg')` 

在我的頭版我列出的新聞和信息,人們已經通過調用我的最新文章發表。並且每個用戶都與一個帖子相關聯。

所以在我的配置我已經創建了我的templatetags文件夾也是一個文件叫我avatar_tags.py myavatar_tags.py

我作出以下

from accounts.models import UserProfile 
from imagekit.models import ImageModel 
from django import template 

register = template.Library() 

@register.simple_tag 
def my_avatar(request, user): 
    avatar = UserProfile.objects.get(pk=user.id) 

my_avatar = register.tag(my_avatar) 

現在這是我寫我的第一個標籤我不確定該怎麼辦。

回答

1

我想你想要一個inclusion tag

@register.inclusion_tag('avatar.html') 
def my_avatar(user): 
    return {'user': UserProfile.objects.get(pk = user.id) } 

然後在一個名爲​​模板,寫你的標籤正常模板 - 你可能想是這樣的:

<img src="{{ user.profile_pic.url }}" alt="{{ user.get_name_somehow }}" /> 

然後你可以使用這個標籤這樣的 - 給其呈現視圖此模板通過名稱my_user傳遞User對象,並且您已將上面的Python代碼放入一個名爲foobar.py的文件中。

{% load foobar %} 

{% my_avatar my_user %} 
+0

嗯,似乎無法得到這個工作。在我的首頁,我通過使用以下語句{%for post in posts%}來調用帖子模型,在Post模型中我有一個用戶字段,這一切仍然適用嗎? – ApPeL 2010-08-18 18:27:25

+0

我已經得到這個工作很順利。我有一個問題,但。我有一個消息模型,它有一個發件人和一個收件人。當我通過收件人時,它可以工作。當我通過發件人時,它失敗了,雖然他們都是用戶的外鍵字段...任何想法? – ApPeL 2010-09-06 13:03:50