Пользовательский тег шаблона аватара django
Мой сайт достаточно визуален, и я хотел бы использовать аватары пользователей по всему сайту, поэтому я считаю, что лучше всего написать собственный шаблонный тег.
мой UserProfile
связано с User
и имеет profile_pic
,
Я использую django-imagekit и, следовательно, ImageModel вступает в игру
class UserProfile(ImageModel):
profile_pic = models.ImageField(storage=cloudfiles_storage,
upload_to='avatars',
default='avatar-blank.jpg')`
На моей главной странице я размещаю новости и информацию, которую люди публикуют, называя все мои последние сообщения. и каждый пользователь связан с постом.
поэтому в моих профилях я создал свой templatetags
папка, а также файл с именем myavatar_tags.py
в моем avatar_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 ответ
Я думаю, что вы хотите тег включения.
@register.inclusion_tag('avatar.html')
def my_avatar(user):
return {'user': UserProfile.objects.get(pk = user.id) }
Затем в шаблоне под названием avatar.html
напишите шаблон для вашего тега как обычно - вы, вероятно, хотите что-то вроде:
<img src="{{ user.profile_pic.url }}" alt="{{ user.get_name_somehow }}" />
Затем вы можете использовать этот тег следующим образом - учитывая представление, которое отображает этот шаблон, передавая User
объект через имя my_user
и вы поместили код Python выше в файл с именем foobar.py
,
{% load foobar %}
{% my_avatar my_user %}