0

Mon site est assez visuel et je voudrais utiliser les avatars des utilisateurs partout sur le site, donc je pense que l'écriture d'un tag de modèle personnalisé est la meilleure voie à suivre.django avatar modèle personnalisé tag

Mon UserProfile est associé à un User et a un profile_pic.

Je me sers de django-imagekit et donc le ImageModel entre en jeu

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

Sur ma page d'accueil Je suis la liste des nouvelles et des informations que les gens ont posté en appelant tous mes derniers messages. et chaque utilisateur est associé à un message.

donc dans mes profils J'ai créé mon dossier et templatetags également un fichier appelé myavatar_tags.py

dans mon avatar_tags.py je le suivais Render

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) 

Maintenant ceci est mon premier tag que je suis en train d'écrire et je ne suis pas sûr de la façon d'aller avec cela.

Répondre

1

Je pense que vous voulez un inclusion tag.

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

Puis dans un modèle appelé avatar.html, écrire un modèle pour votre tag comme normal - vous voulez probablement quelque chose comme:

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

Ensuite, vous pouvez utiliser cette balise comme ceci - étant donné une vue qui rend ce modèle, le passage d'un objet User via le nom my_user, et vous avez mis le code Python ci-dessus dans un fichier appelé foobar.py.

{% load foobar %} 

{% my_avatar my_user %} 
+0

hmm, ne peut pas sembler obtenir ce travail. Sur ma page d'accueil, je rends les messages en utilisant la déclaration suivante {% pour les messages dans les messages%} qui appelle mon modèle de poste, dans mes modèles Post j'ai un champ utilisateur, est-ce encore applicable? – ApPeL

+0

Je l'ai obtenu pour travailler assez lisse. J'ai quand même une question. J'ai un modèle de message qui a un expéditeur et un destinataire. quand je passe le destinataire, ça marche. Quand je passe l'expéditeur, il échoue, bien que les deux soient des champs d'utilisateur foreignKey ... Une idée? – ApPeL

Questions connexes