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 464

Share On:

Share follows: 0 | Unique share links followed: 0
Sponsored links
πŸ‘‰1 Dua za Mitume na Manabii    πŸ‘‰2 Kitabu cha Afya    πŸ‘‰3 ai web app    πŸ‘‰4 Madrasa kiganjani    πŸ‘‰5 Sira ya Mtume Muhammad (s.a.w)    πŸ‘‰6 Bongolite - Game zone - Play free game   

Post zinazofanana:

Python somo la 28: inheritance kwenye OOP

Katika somo hili utakwenda kujifunz amaana ya inheritance na sheria za kuiandika inheritance.

Soma Zaidi...
Python somo la 18: Jinsi ya kuandika function

Katika somo hili utakwend akujifunza jinsi ya kuandika function, kuweka parameter na kuitumia function

Soma Zaidi...
Python somo la 42: Template tag

Katika somo hili utakwenda kujifunza kuhsu Template Tag nini na kazi zake. Pia utajifunza sheria za uandishi wake.

Soma Zaidi...
Python somo la 58: Jinsi ya Kuboresha Django Admin

Katika somo hili tutajifunza mambo matatu muhimu ya kuboresha admin ya Django: Jinsi ya kubadili header za Django Admin Jinsi ya kuongeza columns zinazojitokeza kwenye admin list Jinsi ya kuweka limit ya rows zinazoonekana kwa kila ukurasa (pagination)

Soma Zaidi...
Python somo la 15: Jinsi ya kutumia while loop

Katika somo hili tutakwend akujifunza jinsi ya kutumia while loop kwneye python

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...
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 20: Aina za parameter kwenye function

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

Soma Zaidi...
PYTHON - somo la 2: Sheria za uandishi wa pyhton yaani syntax za python

Katika somo hili utakwenda kujifunza syntaxy za python yaani sheria na kanuni za kuandika code za python

Soma Zaidi...
Python somo la 59: Kufanya Mahesabu (Aggregations) Katika Django

Katika somo hili tutajifunza jinsi ya kutumia Django ORM kufanya mahesabu mbalimbali kama Sum, Avg, Count, Max, Min, pamoja na kupunguza idadi ya items zinazoonekana kwenye dashboard (LIMIT). Pia tutajifunza namna ya kutengeneza β€œdifference” kati ya thamani kubwa na ndogo bila kubadilisha functions zozote ulizokwisha ziandika.

Soma Zaidi...