picha

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.

Utangulizi wa somo…

Dashboard hutoa njia rahisi ya kusimamia data. Badala ya kutumia Django admin, leo tutajenga dashboard yetu wenyewe inayomruhusu admin kuongeza, kuhariri na kufuta taarifa za chakula.


Sasa tuingie kwenye somo letu…

1. Kusudi la Admin Dashboard

Dashboard tunayotengeneza itakuwa sehemu ambayo mtumiaji (mfanyakazi au admin wa hoteli) ataweza:

Hii ndiyo CRUD (Create, Read, Update, Delete).


2. Kutengeneza View ya Dashboard (List of Items)

Katika views.py tengeneza view ya kuonyesha dashboard:

from django.shortcuts import render, get_object_or_404, redirect
from .models import MenuItem

def dashboard(request):
    items = MenuItem.objects.all()
    return render(request, 'dashboard.html', {'items': items})

3. Kutengeneza Template ya Dashboard

Faili: dashboard.html

<!DOCTYPE html>
<html>
<head>
    <title>Dashboard ya Menu</title>
</head>
<body>

<h2>Dashboard – Orodha ya Vyakula</h2>

<a href="{% url 'add_item' %}">Ongeza Kitu Kipya</a>

<table border="1" cellpadding="6">
    <tr>
        <th>Jina</th>
        <th>Muda Upatikanaji</th>
        <th>Bei (TZS)</th>
        <th>Hatua</th>
    </tr>

    {% for item in items %}
    <tr>
        <td>{{ item.jina }}</td>
        <td>{{ item.muda_upatikanaji }}</td>
        <td>{{ item.bei }}</td>
        <td>
            <a href="{% url 'edit_item' item.id %}">Edit</a> |
            <a href="{% url 'delete_item' item.id %}">Delete</a>
        </td>
    </tr>
    {% endfor %}

</table>

</body>
</html>

4. Kutengeneza View ya Kuongeza Data (Create)

def add_item(request):
    if request.method == 'POST':
        jina = request.POST.get('jina')
        maelezo = request.POST.get('maelezo')
        muda = request.POST.get('muda_upatikanaji')
        bei = request.POST.get('bei')

        MenuItem.objects.create(
            jina=jina,
            maelezo=maelezo,
            muda_upatikanaji=muda,
            bei=bei
        )

        return redirect('dashboard')

    return render(request, 'add_item.html')

Template — add_item.html

<h2>Ongeza Kitu Kipya</h2>

<form method="POST">
    {% csrf_token %}

    <label>Jina:</label>
    <input type="text" name="jina"><br>

    <label>Maelezo:</label>
    <textarea name="maelezo"></textarea><br>

    <label>Muda Upatikanaji:</label>
    <input type="text" name="muda_upatikanaji"><br>

    <label>Bei (TZS):</label>
    <input type="number" step="0.01" name="bei"><br>

    <button type="submit">Hifadhi</button>
</form>

5. Kutengeneza View ya Kuhariri Data (Update)

def edit_item(request, id):
    item = get_object_or_404(MenuItem, id=id)

    if request.method == 'POST':
        item.jina = request.POST.get('jina')
        item.maelezo = request.POST.get('maelezo')
        item.muda_upatikanaji = request.POST.get('muda_upatikanaji')
        item.bei = request.POST.get('bei')
        item.save()

        return redirect('dashboard')

    return render(request, 'edit_item.html', {'item': item})

Template — edit_item.html

<h2>Hariri Kitu: {{ item.jina }}</h2>

<form method="POST">
    {% csrf_token %}

    <label>Jina:</label>
    <input type="text" name="jina" value="{{ item.jina }}"><br>

    <label>Maelezo:</label>
    <textarea name="maelezo">{{ item.maelezo }}</textarea><br>

    <label>Muda Upatikanaji:</label>
    <input type="text" name="muda_upatikanaji" value="{{ item.muda_upatikanaji }}"><br>

    <label>Bei:</label>
    <input type="number" step="0.01" name="bei" value="{{ item.bei }}"><br>

    <button type="submit">Hifadhi</button>
</form>

6. Kutengeneza View ya Kufuta Data (Delete)

def delete_item(request, id):
    item = get_object_or_404(MenuItem, id=id)
    item.delete()
    return redirect('dashboard')

7. Kuongeza URL Patterns

Kwenye urls.py:

path('dashboard/', views.dashboard, name='dashboard'),
path('add/', views.add_item, name='add_item'),
path('edit/<int:id>/', views.edit_item, name='edit_item'),
path('delete/<int:id>/', views.delete_item, name='delete_item'),

...

Jiunge nasi WhatsApp kupata update zetu

Zoezi la Maswali

Nyuma Endelea


Umeionaje Makala hii.. ?

Nzuri            Mbaya            Save
Author: Rajabu image Tarehe: 2025-11-23 Topic: Python Main: ICT File: Download PDF Views 386

Share On:

Facebook WhatsApp
Sponsored links
👉1 Dua za Mitume na Manabii    👉2 Bongolite - Game zone - Play free game    👉3 Sira ya Mtume Muhammad (s.a.w)    👉4 Kitau cha Fiqh    👉5 Kitabu cha Afya    👉6 Madrasa kiganjani   

Post zinazofanana:

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 14: Jinsi ya kutumia For loop

Katika somo hili utakwend akujifunza matumizi ya for loop kwneye python

Soma Zaidi...
Python somo la 23: Library kwenye python

Hapa utajifunza maana ya library, kazi zake aina zake na jinsi ya ku install lirary

Soma Zaidi...
Python somo la 56: Kuongeza Data Katika Database kwa Kutumia Django Admin na Django Shell

Katika somo hili tutajifunza njia mbili muhimu za kuongeza data kwenye database katika project yetu ya pybongo (app: menu). Njia hizi ni: Kutumia Django Admin Kutumia Django Shell Utafahamu pia jinsi ya kusajili models kwenye admin, jinsi ya kuingia admin panel, na namna ya kutengeneza entries mpya za MenuItem.

Soma Zaidi...
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.

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 7: Jinsi ya kubadili aina ya data

Katika soo hili utakwenda kujifunza jinsi ya kubaduli aina moja ya data kwena aina nyingine. Kwa mfano unaweza kubadili namba kuwa string ama kubadili string kuwa nanda ama kubadili float kuwa int.

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 45: Kutumia Loops na Conditions katika Django Templates

Katika somo hili utakwend akujifunza kuchakata data kwa Kutumia Loops na Conditions katika Django Templates

Soma Zaidi...
Python somo la 54: Jinsi ya Kusoma Data Kutoka Database kwenye Django

Katika somo hili tutajifunza namna ya kusoma data kutoka kwenye database kupitia Django ORM, jinsi ya kuzipeleka kwenye view, na jinsi ya kuzionyesha kwenye HTML template.

Soma Zaidi...