Lekcja 6: Profile Użytkowników – Bo Każdy Zasługuje na Chwilę Sławy!
Gratulacje, mistrzu blogów! 🎉 Już ogarnąłeś rejestrację, logowanie i komentarze. Ale bez profili użytkowników twój blog jest trochę jak impreza w maskach – wszyscy są incognito. Czas to zmienić i dać użytkownikom szansę na przedstawienie się światu!
Dziś dodamy profile użytkowników, żeby każdy mógł mieć swoje miejsce na blogu. To jak przypiąć każdemu plakietkę: “Tak, jestem tu i mam coś do powiedzenia!”
Krok 1: Aktywuj Wirtualne Środowisko (Twój Zen dla Kodowania)
Najpierw upewnij się, że jesteś w swoim wirtualnym środowisku – tam, gdzie dzieje się cała magia.
source venv/bin/activate
Jeśli w terminalu widzisz (venv)
, to znaczy, że jesteś w swojej strefie koderskiego spokoju. 🧘♂️
Krok 2: Zainstaluj Pillow (Żeby Zapanować nad Obrazkami)
Ponieważ dodamy zdjęcia profilowe, Django potrzebuje biblioteki Pillow do obsługi obrazków. Zainstalujmy ją, żeby Django mogło korzystać z ImageField
.
python3 -m pip install Pillow
Teraz, gdy Pillow jest zainstalowane, Django jest gotowe na zdjęcia profilowe!
Krok 3: Rozszerz Model Użytkownika (Dodajmy Trochę Charakteru)
Model użytkownika Django działa, ale jest trochę… ogólny. Stwórzmy profil dla każdego użytkownika, z polem na biografię, zdjęcie i wszystko, co tylko można sobie wymarzyć.
Ścieżka do pliku: myblog/blog/models.py
Dodaj ten kod poniżej modelu Comment
:
from django.contrib.auth.models import User
from django.db import models
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile")
bio = models.TextField(blank=True, null=True)
profile_picture = models.ImageField(upload_to='profile_pics/', blank=True, null=True)
def __str__(self):
return f"Profil {self.user.username}"
user
: Łączy profil z użytkownikiem Django.bio
: Tutaj użytkownicy mogą opisać siebie.profile_picture
: Bo kto nie chciałby mieć fajnego zdjęcia profilowego?
Krok 4: Stwórz i Zastosuj Migracje (Formalności Też Są Ważne)
Dajmy Django znać o naszej nowej modelu. Uruchom te komendy, żeby stworzyć i zastosować migracje:
python3 manage.py makemigrations
python3 manage.py migrate
Teraz baza danych Django oficjalnie przyjmuje twoje profile użytkowników. Hurra! 🎉
Krok 5: Utwórz Profile dla Istniejących Użytkowników
Jeśli masz już użytkowników, mogą oni nie mieć jeszcze profilu. Uruchomimy prosty skrypt w Django shell, który stworzy brakujące profile.
-
Otwórz Django shell komendą:
python3 manage.py shell
-
Wykonaj ten kod w Django shell:
from django.contrib.auth.models import User from blog.models import UserProfile for user in User.objects.all(): if not hasattr(user, 'profile'): UserProfile.objects.create(user=user) print(f'Utworzono profil dla {user.username}')
-
Wyjdź z shell komendą:
exit()
Teraz każdy użytkownik ma profil, nawet jeśli został stworzony przed tą lekcją!
Krok 6: Dodaj Signals, żeby Profile Tworzyły się Automatycznie
Nie chcemy, żeby użytkownicy musieli sami szukać przycisku “stwórz profil”. Zrobimy to automatycznie za pomocą signals, żeby każdy nowy użytkownik dostawał profil od razu.
Ścieżka do pliku: myblog/blog/signals.py
Stwórz ten plik i dodaj poniższy kod:
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.contrib.auth.models import User
from .models import UserProfile
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
Teraz, za każdym razem, gdy rejestruje się nowy użytkownik, Django automatycznie tworzy profil. Magia w akcji!
Krok 7: Zarejestruj UserProfile w Adminie (Żeby Mieć Wszystko Pod Ręką)
Dodajmy UserProfile
do panelu admina, żeby móc przeglądać profile użytkowników w jednym miejscu.
Ścieżka do pliku: myblog/blog/admin.py
Dodaj ten kod:
from django.contrib import admin
from .models import UserProfile
admin.site.register(UserProfile)
Teraz możesz zobaczyć profile użytkowników w panelu admina – prawdziwa galeria!
Krok 8: Stwórz Formularz Profilu (Bo Ludzie z Klasą Potrzebują Formularza z Klasą)
Aby użytkownicy mogli edytować swój profil, stwórzmy formularz.
Ścieżka do pliku: myblog/blog/forms.py
Dodaj ten kod poniżej CustomUserCreationForm
:
from .models import UserProfile
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ['bio', 'profile_picture']
Krok 9: Dodaj Widok do Edycji Profilu (Niech Użytkownicy Lśnią)
Stwórzmy widok, dzięki któremu użytkownicy będą mogli edytować swój profil.
Ścieżka do pliku: myblog/blog/views.py
Dodaj ten kod:
from django.contrib.auth.decorators import login_required
from .forms import UserProfileForm
from django.shortcuts import render, redirect
@login_required
def update_profile(request):
profile = request.user.profile
if request.method == 'POST':
form = UserProfileForm(request.POST, request.FILES, instance=profile)
if form.is_valid():
form.save()
return redirect('profile')
else:
form = UserProfileForm(instance=profile)
return render(request, 'profile/update_profile.html', {'form': form})
Teraz twoi użytkownicy mogą edytować swoje profile – dodać biografię, fotkę i cieszyć się byciem VIP-em na blogu!
Krok 10: Stwórz Szablon dla Profilu (Pora Lśnić!)
Stwórzmy szablon do strony edycji profilu.
Ścieżka do pliku:
myblog/
blog/
templates/
profile/
update_profile.html
Oto przykładowy szablon:
{% extends "base.html" %}
{% block title %}Edytuj Profil{% endblock %}
{% block content %}
<h2>Edytuj swój profil</h2>
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Zapisz Zmiany</button>
</form>
{% endblock %}
Krok 11: Dodaj URL do Widoku Edycji Profilu
Dodaj trasę URL, żeby użytkownicy mogli dotrzeć do strony edycji profilu.
Ścieżka do pliku: myblog/blog/urls.py
Dodaj ten kod:
from . import views
urlpatterns = [
path('', views.blog_index, name='blog_index'),
path('post/<int:pk>/', views.blog_post_detail, name='blog_post_detail'),
path('register/', views.register, name='register'),
path('profile/', views.update_profile, name='profile'),
]
Teraz użytkownicy mogą wejść na stronę /profile/
i edytować swój profil.
Krok 12: Testuj Funkcję! (Czas na Prawdziwą Chwilę Sławy)
Uruchom serwer i przetestuj nowy profil użytkownika:
python3 manage.py runserver
Odwiedź /profile/
i sprawdź, czy możesz edytować swój profil. Dodaj opis, wstaw zdjęcie – i baw się dobrze, tworząc profil, który pokazuje, jaki jesteś wyjątkowy!
Krok 13: Wyjdź z Wirtualnego Środowiska (Do Zobaczenia, Koderowy Zen)
Gdy wszystko skończone, pamiętaj, żeby wyjść z wirtualnego środowiska:
deactivate
Witaj z powrotem w rzeczywistości, z funkcją profilu użytkownika i nową falą osobowości na twoim blogu.
Podsumowanie Lekcji 6
Brawo! 🎉 Dodałeś profile użytkowników do swojego bloga na Django. Teraz każdy może mieć swoją biografię i zdjęcie profilowe, co nadaje twojemu blogowi więcej charakteru.
W następnej lekcji będziemy dalej pracować nad personalizacją interakcji z użytkownikami. Ale póki co, ciesz się profilem, który dodaje życia twojemu blogowi! 🧙♂️✨
Zobacz też
- Lekcja 5: Rejestracja użytkowników — Bo tylko zasłużeni mogą komentować!
- Lekcja 4: Autoryzacja użytkowników – Bo nie każdy powinien mieć dostęp do twojego bloga!
- Chromium vs Firefox: Pojedynek Przeglądarek, o Którym Nawet Nie Wiedziałeś, Że Go Potrzebujesz!
- Lekcja 3: Formularze – Sztuka Grzecznego Proszenia o Dane (I Nie Wystraszenia Użytkowników)
- Lekcja 2: Model-View-Template (MVT) – Jak MVC, tylko z magią i mniej bólu głowy