File Upload

Kategori: Python / Django , 26 Eylül 2019 , JanFranco


Dosya yüklemeyi göreceğiz fakat dosya yüklemenin yanında resim de yüklemek istiyorsak Pillow kütüphanesinin yüklü olması gerek:


pip install Pillow
Yüklenen dosyaların nereye kaydedileceğini belirlemek için settings.py dosyasını açalım ve aşağıdaki ayarları ekleyelim:


MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Yüklenen dosyaların adresini belirlemek için urls.py dosyasına girelim ve aşağıdaki methodları import edelim:


from django.conf import settings
from django.conf.urls.static import static
Aynı dosyada en alta aşağıdaki satırları ekleyelim:


urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
settings.py dosyasını açalım ve TEMPLATES bölümüne aşağıdaki satırı ekleyelim:


'django.template.context_processors.media',
Bir kullanıcı yazdığı yazıya resim eklediğinde ve bu yazıyı sildiğinde resmin de silinmesi gerekli. Bunun için aşağıdaki kütüphaneyi kuralım:


pip install django_cleanup
settings.py dosyasını açalım ve INSTALLED_APPS listesine aşağıdaki uygulamayı ekleyelim:


'django_cleanup',
article klasöründeki models.py dosyasını açalım ve bir resim alanı ekleyelim:


article_image = models.FileField(blank=True, null=True, verbose_name = "Resim Ekle")
Modeli değiştirdik ve bu değişikliğin veri tabanında da olması için yeni terminal açıp aşağıdaki iki komutu sırasıyla çalıştıralım:


python manage.py makemigrations
python manage.py migrate
Resim ekleme alanı oluşturduğumuzdan dolayı, yazı ekleme formunda da bu alanın olması gerekli. forms.py dosyasını açalım ve ekleyelim:


fields = ["title", "content", "article_image"]
views.py dosyasını açalım ve addarticle() fonksiyonundaki form objesini güncelleyelim:


form = forms.ArticleForm(request.POST or None, request.FILES or None)
Eklediğimiz resimleri yazılarda da gösterebilmek için detail.html dosyasını açalım ve ekleyelim:


{% if article.article_image %}
	<img class="img-fluid rounded" src="{{article.article_image.url}}" alt="">
{% endif %}
Son olarak addarticle.html dosyasını açalım ve formu aşağıdaki şekilde güncelleyelim:


<form method="post" enctype="multipart/form-data">


Sonraki Yazı: Updating and Deleting Articles
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın