picha

Python somo la 62 Kupakia picha (upload) na kuisoma kutoka kwenye database

Katika somo hili utakwenda kujifunza jinsi ya kushughulika na faili, kama ku upload faili kwenye django.

Utangulizi

Katika mifumo mingi mitandaoni tunahitaji kupokea picha kutoka kwa watumiaji: iwe profile picture, product, receipt, au document. Django ni moja ya frameworks zinazoruhusu kushughulikia hii kwa urahisi sana kwa kutumia ImageField, MEDIA_URL, na MEDIA_ROOT.

Leo tutajifunza mfumo mzima kuanzia configuration hadi uonyeshaji wa picha.


Sasa tuingie kwenye somo letu…


SEHEMU YA 1 — Kupanga SETTINGS za media (settings.py)

Kwa default Django haitumii media (files zinazopakiwa), hivyo tunahitaji kuongeza settings mbili muhimu:

1. MEDIA_URL

Hii ndiyo URL itakayotumika kuifikia picha kupitia browser.

Mfano:

MEDIA_URL = '/media/'

2. MEDIA_ROOT

Hiki ni kipath cha folder halisi kwenye computer ambako picha zitahifadhiwa.

Mfano:

import os
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

Mahali pa kuweka hizi settings

Zinawekwa ndani ya settings.py sehemu ya chini mara nyingi baada ya STATIC settings, mfano:

# Static files
STATIC_URL = '/static/'

# Media files
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

Kazi yake:


SEHEMU YA 2 — Kuandaa URL configuration ya media (urls.py)

Hii ni muhimu kwenye development environment; bila hii Django haitoweza kuserve picha.

Fungua project_name/urls.py na ongeza:

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... your URLs
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Kazi ya code hii:


SEHEMU YA 3 — Kutengeneza Model yenye ImageField

Fungua app/models.py:

from django.db import models

class ProfilePicture(models.Model):
    title = models.CharField(max_length=100)
    image = models.ImageField(upload_to='uploads/')
    uploaded_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

Maelezo ya kandoni:

Install Pillow:

pip install Pillow

SEHEMU YA 4 — Kufanya Migration

Baada ya kuongeza model:

python manage.py makemigrations
python manage.py migrate

Bila migration:


SEHEMU YA 5 — Kutengeneza Form ya kupokea picha

Fungua app/forms.py:

from django import forms
from .models import ProfilePicture

class PictureForm(forms.ModelForm):
    class Meta:
        model = ProfilePicture
        fields = ['title', 'image']

SEHEMU YA 6 — Kutengeneza View ya kupokea picha na kuisave

from django.shortcuts import render, redirect
from .forms import PictureForm

def upload_picture(request):
    if request.method == 'POST':
        form = PictureForm(request.POST, request.FILES)
        
        if form.is_valid():
            form.save()
            return redirect('picture_list')
    else:
        form = PictureForm()

    return render(request, 'upload_picture.html', {'form': form})

Maelezo ya kina:


SEHEMU YA 7 — Template ya Upload (HTML)

templates/upload_picture.html

<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}

    <button type="submit">Upload Picture</button>
</form>

Kwa nini enctype="multipart/form-data" ni lazima?


SEHEMU YA 8 — View ya kusoma picha zote

from django.shortcuts import render
from .models import ProfilePicture

def picture_list(request):
    pictures = ProfilePicture.objects.all()
    return render(request, 'picture_list.html', {'pictures': pictures})

SEHEMU YA 9 — Template ya kuonyesha picha

templates/picture_list.html

<h2>Uploaded Pictures</h2>

{% for pic in pictures %}
    <div style="margin-bottom:20px;">
        <h4>{{ pic.title }}</h4>
        <img src="{{ pic.image.url }}" width="200px">
    </div>
{% empty %}
    <p>No pictures uploaded.</p>
{% endfor %}

Maelezo:

 

Kwa utaratibu huu huu unaweza ku-upload PDF, documents, audio, videos au file lolote — ila badala ya ImageField utatumia FileField, na badala ya kuonyesha kwa <img> utaita file.url.


Je wajua…


Hitimisho

Katika somo hili umejifunza hatua zote muhimu za kushughulika na picha ndani ya Django:

  1. Kuweka MEDIA_URL na MEDIA_ROOT kwenye settings.py

  2. Kuandaa URL configuration ya media files

  3. Kutengeneza model yenye ImageField

  4. Kufanya migrations

  5. Kutengeneza form ya kupokea picha

  6. Kutengeneza view ya kusave picha

  7. Kutengeneza template ya upload

  8. Kuonyesha picha kwenye template

  9. Maelezo ya msingi ya image handling kwenye Django

 

Jiunge nasi WhatsApp kupata update zetu

Zoezi la Maswali

Nyuma


Umeionaje Makala hii.. ?

Nzuri            Mbaya            Save
Author: Rajabu image Tarehe: 2025-12-05 Topic: Python Main: ICT File: Download PDF Views 475

Share On:

Share follows: 0 | Unique share links followed: 0
Sponsored links
👉1 Sira ya Mtume Muhammad (s.a.w)    👉2 Tafasiri ya Riyadh Swalihina    👉3 ai web app    👉4 Madrasa kiganjani    👉5 web hosting    👉6 kitabu cha Simulizi   

Post zinazofanana:

Python somo la 31: Jinsi ya kutengeneza faili na folder

Katika somo hili utajifunz ajinsi ya kutengeneza folda, faili na kuweka data kwneye faili

Soma Zaidi...
PYHON - somo la 5: Aina za data list, turple, dictionary na boolean

Katika somo hili tunakwenda kujifunza aina nyingine za data ambazo hutumika kwenye python.

Soma Zaidi...
Python somo la 30: Data abstraction

Katika somo hili utakwend akujifunz akuhusu nadharia ya data abstraction na kazi zake kwenye OOP

Soma Zaidi...
Python somo la 52: Kutengeneza table na kufanya Migrations Katika Django

Katika somo hili tutajifunza jinsi Django hutumia migrations kuunda na kubadilisha tables kwenye database kulingana na models tunazoandika. Tutapitia maana ya migration, hatua za kuitumia, umuhimu wake, misingi ya makemigrations na migrate, pamoja na mfano halisi kutoka kwenye project yetu ya pybongo (app: menu).

Soma Zaidi...
Python somo la 19: Aina za Function

Katika somo hili utakwend akujifunza aina mbalimbali za function ambazo tunaweza kuzitumia kwenye python.

Soma Zaidi...
Python somo la 47: Jinsi ya kupokea na kuchakata fomu

Katika somo hili utakwend akujifunza jinsi ya kupokea na kuchakata fomu

Soma Zaidi...
Python somo la 25: Sheria za uandishi wa class

Katika somo hili utajifunza maana ya class, sheria za uandishi wake na mifano halisi

Soma Zaidi...
Python somo la 20: Aina za parameter kwenye function

Katika somo hili tutakwend akujifunza kwa urefu zaidi kuhusu parameter ambazo hutumika kwenye functions

Soma Zaidi...
Python seomo la 55: Kutengeneza Simple Admin Dashboard ya CRUD

Katika somo hili tutajifunza jinsi ya kuunda dashboard rahisi ndani ya Django ambayo itaruhusu mtumiaji kuongeza, kusoma, kuhariri na kufuta taarifa za MenuItem bila kutumia Django built-in admin, bali kwa kutumia HTML templates na views tulizotengeneza sisi wenyewe.

Soma Zaidi...
Python somo la 35: Jinsi ya kutumia MYSQL kwenye python

Katika somo hili utajifunz akutumia database kwenye python

Soma Zaidi...