Chcę, aby każdy użytkownik w mojej witrynie miał obraz w swoim profilu. Nie potrzebuję żadnych miniatur ani czegoś w tym stylu, tylko obraz dla każdego użytkownika. Im prostsze, tym lepiej. Problem polega na tym, że nie wiem, jak wstawić ten typ pola do mojego profilu użytkownika. Jakieś sugestie?Dodaj pole image/awatar do użytkowników w django
Odpowiedz
Musisz złożyć formularz, który ma czyste metodę, która sprawdza właściwości, których szukasz:
#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
nadzieję, że pomoże Ci się.
Ten przykład również pomógł mi: https://coderwall.com/p/bz0sng – ferrangb
Zakładając, że używasz standardu contrib.auth
, możesz wyznaczyć model jako 'user profile' model, poprzez ustawienie AUTH_PROFILE_MODULE
. Następnie możesz użyć go do dołączenia wszelkich dodatkowych informacji, które chcesz do obiektów User
, np.
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User)
avatar = models.ImageField() # or whatever
Mam model dla UserProfile, mój problem polega na wstawianiu do niego obrazu (ponieważ nie jest on podobny do żadnego innego zwykłego pola) – smhagut
@smhagut: Przeczytaj [dokumentację dotyczącą przesyłania plików] (https://docs.djangoproject.com /en/1.3/topics/http/file-uploads/). –
To jest dla każdego rodzaju pliku. Jak mogę się upewnić, że jest to plik obrazu w określonym rozmiarze? (nie większy niż 250 KB, na przykład) i jak połączyć go z moim profilem użytkownika? – smhagut
Aby połączyć model USERPROFILE do modelu użytkownika upewnij się, że rozszerzenie modelu użytkownika w pełni wyjaśnione w tym tutorialu: http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/
To pozwoli Ci uzyskać dostęp do atrybutów UserProfile dla Użytkownika, w tym awatara, używając user.get_profile(). avatar. (Uwaga składni w różny w szablonie, patrz poniżej na sposób wyświetlania awatara w szablonie).
Można użyć pola obrazu w modelu UserProfile do Avatar:
avatar = models.ImageField(upload_to='/images/)
to działa dokładnie jak FileField, ale jest specyficzny dla obrazów i sprawdza, czy przesłany obiekt jest prawidłowym obrazem. Aby ograniczyć rozmiar pliku można użyć odpowiedź udzieloną przez @pastylegs tutaj: Max image size on file upload
Następnie, zakładając swój model UserProfile nazywa UserProfile, dostęp awatara w szablonie następująco:
<img src=path/to/images/{{ user.get_profile.avatar }}">
Więcej o polu obrazu tutaj: https://docs.djangoproject.com/en/dev/ref/models/fields/#imagefield
- 1. Dodaj dodatkowe pola do Django do Django Auth Groups
- 2. django śledzenie ostatnich użytkowników online
- 3. Django, pole opcji do wyboru
- 4. Pole modelu w Django
- 5. Dodaj funkcjonalność do Django FlatPages bez zmiany oryginalnej aplikacji Django
- 6. Dodaj pole niestandardowe do kursu Moodle
- 7. Pole tylko do odczytu w formularzu Django
- 8. Symfony2 dodaj pole reCaptcha do formularza rejestracyjnego
- 9. Dodaj pole tekstowe pomocnika rails do atrybutu?
- 10. Django Zdobądź wszystkich użytkowników
- 11. Dodaj kontakt do użytkowników contaclist w aWindows 8 Metro App
- 12. Jak renderować pole formularza Django w szablonie?
- 13. Modele Django - Pole ilościowe
- 14. Dodaj pole wyboru "Zapamiętaj mnie"
- 15. Django - Profile użytkowników różnych typów
- 16. Dodaj pole CCK do formularza niestandardowego w Drupal 7
- 17. Dodaj pole odnośnika do typu zawartości w programie SharePoint
- 18. Jak dodać pole obliczeniowe do modelu Django
- 19. Wiele typów użytkowników Auth w Django
- 20. Django serializer Metoda Pole
- 21. Jak zdobyć wszystkich użytkowników grupy w Django?
- 22. django unikalne pole
- 23. Tworzenie użytkowników w LDAP przy użyciu Django
- 24. Django - zezwalaj na zduplikowane nazwy użytkowników
- 25. Wprowadzanie danych użytkownika do tworzenia użytkowników w Django
- 26. Grupy użytkowników panelu administracyjnego Django w poziomie
- 27. Logowanie dla wielu użytkowników Django - najlepsze podejście?
- 28. Jak ustawić pole tekstowe jako pole wyboru w django
- 29. Filtrowanie listy użytkowników za pomocą pola UserProfile w Django Admin
- 30. Django: formset jako pole formularza
Jakie jest Twoje konkretne pytanie? –