Bu Python öğreticisiyle basit ama etkili bir resim yükleyici oluşturun.

Modern bir uygulamanın en çekici özelliklerinden biri, görüntüleri barındırma yeteneğidir. Resimler, çizimler ve animasyonlar gibi görseller bir uygulamaya görsel çekicilik katar.

Görüntüler önemli olmakla birlikte, uygulamayı yavaşlatabilir ve veritabanına yönelik güvenlik tehditlerini artırabilir.

Django üzerine kurulu uygulamalar için görüntüleri karşıya yüklemek kolay ve güvenlidir. Django, görüntü yüklemeleri sağlayan özel bir özelliğe sahiptir.

Güvenlikten ödün vermeden görüntüleri bir Django uygulamasına nasıl yükleyeceğinizi öğrenelim.

Neye ihtiyacın var

Resimleri yüklemeye başlamadan önce, aşağıdaki gereksinimlere sahip olduğunuzdan emin olun:

  • Python'u yükleyin
  • Pip'i yükleyin
  • Düzenlemek Pipenv (dilerseniz venv de kullanabilirsiniz)
  • Django'yu yükleyin
  • Görüntülere ihtiyaç duyan mevcut bir Django Uygulamanız var

Artık gerekli bağımlılıklara sahip olduğunuza göre başlayalım.

1. Yastık takın

Django'nun bir Görüntü Alanı

instagram viewer
modellerinde. Alan, Görüntü yüklemelerini veritabanında değil, dosya sisteminde belirli bir konumda depolar. Yastık ImageField'deki görüntüleri kontrol eden bir Python kitaplığıdır.

Yüklemek yastık aşağıdaki komutu kullanın:

pipenv install pillow

venv kullanıyorsanız, bunun yerine bu komutu kullanın

pip install pillow

2. Model Oluştur

Oluşturduğunuz bir Görüntü Alanı veritabanında referans. Ardından, upload_to modeldeki argüman. Bağımsız değişken, dosya sistemindeki bir depolama konumunu tanımlar.

classProfile(models.Model):
name = models.CharField(max_length=80, blank=True)
bio = models.TextField(max_length=254, blank=True)
profile_picture = models.ImageField(upload_to='photos/')

def__str__(self):
returnf'{self.user.username} profile'

Sondaki yöntem, verileri dizelere dönüştürmeye yardımcı olur.

Ardından, yeni değişiklikleri veritabanına geçirin ve işleyin. Ardından, proje ayarlarını düzenlemeniz gerekir.

Proje ayarına gidin. Başlığın altında # Statik dosyalar (CSS, JavaScript, Resimler), medya URL'sini ekleyin.

# https://docs.djangoproject.com/en/4.0/howto/static-files/
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
 
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
 
# STATICFILES_STORAGE =
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

Ayarlara medya URL'leri eklemek, yüklenen resimleri görüntülemek için belirli bir yol tanımlar. Medya dosyası, uygulama resimlerini saklar. Yol şöyle görünecek: 127.0.0.1:8000/medya/profil/resim.jpg

güncelle ŞABLONLAR proje ayarlarında dizi. Eklemek django.template.context_processors.media şablonlar dizisine.

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django.template.context_processors.media'
],
},
},
]

İşlemcilerin ortam ayarı, yüklenen görüntülerin uygulama şablonlarına yüklenmesine yardımcı olur.

Ardından, eklemeniz gereken MEDIA_ROOT Uygulama URL'lerine yönlendirin. Bu, yüklenen görüntülerin geliştirme sunucusuna yüklenmesine yardımcı olacaktır.

İlk olarak, proje ayarlarını django.conf modül ve bir statik fonksiyon. Ardından, url kalıpları yüklenen dosyaların konumunu gösteren statik bir rota.

from django.urls import path
from. import views
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
 
urlpatterns = [
path('', views.index, name = 'index'),
path('profile', views.profile, name='profile'),
]
 
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()

5. Resim Yüklemelerini Test Et

Ardından, sunucuyu çalıştırın:

python manage.py runserver

Hata yoksa, temel URL'ye bir yönetici yolu ekleyerek Django yönetici paneline gidin, http://127.0.0.1:8000/admin.

Yönetici paneli içerisinde Profil modeline tıkladığınızda alt kısımda eklenmiş bir resim alanı göreceksiniz.

Bir resim yüklediğinizde, uygulama klasöründe oluşturulan yeni bir klasör göreceksiniz. medya. Klasörü açtığınızda admin paneli üzerinden yüklediğiniz görseli göreceksiniz.

6. Yüklenen Resmi Görüntüle

Profil resmini görüntülemek için profil şablonunu güncellemelisiniz.

bir ekleyeceksiniz img etiketleyin ve şununla doldurun: profil fotoğrafı bağlanmak. bu Görüntü Alanı dosyaya mutlak URL sağlayan bir URL özniteliğine sahiptir. Görüntünün şeklini ve görünümünü CSS sınıflarını kullanarak belirleyebilirsiniz.

{% extends "base.html" %}
{% load static %}

{% block content %}
<divclass="card mb-3 bg-whitesmoke"style="max-width: fit content;">
<divclass="row g-0">
<divclass="col-md-4">
<imgsrc="{{user.profile.profile_picture.url}}"width="100px"alt="profile pic"class="mx-auto d-block rounded-circle" />
div>
div>
div>
{% endblock %}

Görüntüyü yüklemek için sunucuyu çalıştırabilirsiniz. Ardından, görüntülenen resmi görmek için tarayıcıdaki şablonu kontrol edin.

Bir Django Uygulamasında Görüntüler Nasıl Yüklenir

Django, uygulamalarınıza resim yüklemeyi kolaylaştırır. Django, yüklemeden önce dosya türünü ekleyen ve kontrol eden modellerinde özel bir alana sahiptir.

ImageField, görüntüleri depolamak için bir dosya sistemine giden mutlak bir yol sağlar. Görüntülerin bir dosya sisteminde saklanması, uygulamanın hızını artırır ve veritabanına zararlı dosyaların sızmamasını sağlar.