Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

Ajouter un champ d'image / Avatar pour les utilisateurs dans django

Je veux que chaque utilisateur de mon site ait une image dans son profil. Je n'ai besoin d'aucune miniatures ou quelque chose comme ça, juste une photo pour chaque utilisateur. Plus facile, mieux c'est. Le problème est que je ne sais pas comment insérer ce type de champ dans votre profil utilisateur. Avez-vous des idées?
Invité:

Emilie

Confirmation de:

Vous devez créer un formulaire avec une méthode propre de vérifier les propriétés que vous recherchez:


#models.py
from django.contrib.auth.models import User

class UserProfile/models.Model/:
user = models.OneToOneField/User/
avatar = models.ImageField//


#forms.py
from django import forms
from django.core.files.images import get_image_dimensions

from my_app.models import UserProfile


class UserProfileForm/forms.ModelForm/:
class Meta:
model = UserProfile

def clean_avatar/self/:
avatar = self.cleaned_data['avatar']

try:
w, h = get_image_dimensions/avatar/

#validate dimensions
max_width = max_height = 100
if w > max_width or h > max_height:
raise forms.ValidationError/
u'Please use an image that is '
'%s x %s pixels or smaller.' % /max_width, max_height//

#validate content type
main, sub = avatar.content_type.split/'/'/
if not /main == 'image' and sub in ['jpeg', 'pjpeg', 'gif', 'png']/:
raise forms.ValidationError/u'Please use a JPEG, '
'GIF or PNG image.'/

#validate file size
if len/avatar/ > /20 * 1024/:
raise forms.ValidationError/
u'Avatar file size may not exceed 20k.'/

except AttributeError:
"""
Handles case when we are updating the user profile
and do not supply a new avatar
"""
pass

return avatar


J'espère que cela vous aidera.

Giselle

Confirmation de:

Pour connecter le modèle UserProfile Pour votre modèle utilisateur, assurez-vous de prolonger votre modèle utilisateur, comme décrit complètement dans ce manuel:
http://www.b-list.org/weblog/2 ... odel/
/

Cela vous permettra d'accéder aux attributs. UserProfile Pour votre utilisateur, y compris avatar, en utilisant user.get_profile//. avatar. /Faites attention à une autre syntaxe de votre modèle, voir ci-dessous comment afficher un avatar dans votre modèle./

Vous pouvez utiliser le champ Image de votre modèle. UserProfile Pour Avatar:


#upload at specific location
avatar = models.ImageField/upload_to='images'/


Ça marche comme FileField, Mais spécifiquement pour les images et confirme que l'objet chargé est une image autorisée. Pour limiter la taille du fichier, vous pouvez utiliser la réponse donnée ici @pastylegs:
https://coderoad.ru/6195478/
Ensuite, supposant votre modèle userprofile appelé UserProfile, Vous avez accès à Avatar dans votre modèle comme suit:


<img src="path/to/images/{{" user.get_profile.avatar="" }}"=""/>


En savoir plus sur le champ Image ici:
https://docs.djangoproject.com ... field

Denis

Confirmation de:

Soutenir , que vous utilisez la norme
contrib.auth

, Vous pouvez attribuer un modèle comme
https://docs.djangoproject.com ... users
Utilisation du paramètre
AUTH_PROFILE_MODULE

. Ensuite, vous pouvez l'utiliser pour joindre toutes les informations supplémentaires aux objets.
User

, par exemple


from django.contrib.auth.models import User

class UserProfile/models.Model/:
user = models.OneToOneField/User/
avatar = models.ImageField// # or whatever

Pour répondre aux questions, connectez-vous ou registre