picha

Python somo la 53: Kutengeneza HTML Form na Django View kwa ajili ya kuingiza data

Katika somo hili tutaangalia jinsi ya kutengeneza fomu ya HTML kwa ajili ya kuingiza data kwenye jedwali la MenuItem, pamoja na kutengeneza view itakayopokea data hiyo na kuihifadhi kwenye database. Pia tutaunganisha form na URL route.

Utangulizi

Leo tutaendelea na mchakato wa kuingiza data kwenye jedwali la MenuItem kwa kutengeneza HTML form pamoja na view ya kushughulikia data kutoka kwenye fomu hiyo.


Sasa tuingie kwenye somo


1. Kutengeneza Django Form Class (recommended)

Badala ya kuandika HTML form manually, Django hutupatia “Form class” ambayo ni salama, rahisi, na ina-validations.

➡️ Unda faili forms.py ndani ya app yako:

forms.py

from django import forms
from .models import MenuItem

class MenuItemForm(forms.ModelForm):
    class Meta:
        model = MenuItem
        fields = ['jina', 'maelezo', 'muda_upatikanaji', 'bei']

Hii Form class ndiyo itatusaidia kutengeneza HTML form moja kwa moja.


2. Kutengeneza View ya Kupokea Data

Unda view ambayo itaonyesha form na pia kupokea data kutoka kwa user.

views.py

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

def ongeza_menu_item(request):
    if request.method == 'POST':
        form = MenuItemForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('menu_success')
    else:
        form = MenuItemForm()

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

Maelezo muhimu:


3. Kutengeneza URL Route

Fungua urls.py ya app yako:

from django.urls import path
from . import views

urlpatterns = [
    path('ongeza/', views.ongeza_menu_item, name='ongeza_menu'),
    path('success/', views.menu_success, name='menu_success'),
]

Kisha tengeneza success view:

def menu_success(request):
    return render(request, 'success.html')

4. Kutengeneza Template File (HTML Form)

Unda faili ongeza_menu.html ndani ya folder templates/:

<!DOCTYPE html>
<html>
<head>
    <title>Ongeza Menu Item</title>
</head>
<body>

<h2>Ongeza Bidhaa Mpya</h2>

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

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

</body>
</html>

{{ form.as_p }} ina-generate HTML form full kwa kutumia Django Form class tuliyotengeneza.


5. Kutengeneza success page

success.html

<h3>Taarifa imehifadhiwa kikamilifu!</h3>
<a href="{% url 'ongeza_menu' %}">Ongeza nyingine</a>

Kuboresha muonekano unaweza kutumia bootatrap kama hivi:

form.py

from dj...

Ingia sasa ili uweze kusoma makala hii yote.

Zoezi la Maswali

Nyuma Endelea


Umeionaje Makala hii.. ?

       
Author: Rajabu image Tarehe: 2025-11-23 08:49:48 Topic: Python Main: Masomo File: Download PDF Views 643

Share On:

Share follows: 0 | Unique share links followed: 0
Sponsored links
👉1 Kitau cha Fiqh     👉2 Dua za Mitume na Manabii     👉3 Sira ya Mtume Muhammad (s.a.w)     👉4 Madrasa kiganjani     👉5 ai web app     👉6 Kitabu cha Afya    

Post zinazofanana:

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 46: Kutengeneza Fomu na Kuituma kwa Django Template

Katika somo hili utakwenda kujifunza kutengeneza htmk form pamoja na kuituma.

Soma Zaidi...
Python somo la 44: Data Manipulation katika Django Templates

Katika somo hili utakwend akujifunza jinsi ya kucheza na data kuzibadili kwa namna mbali mbali kwenye template

Soma Zaidi...
Python somo la 26: Sheria za uandishi wa object

Katika somo hili utakwend akujifunza maana ya object, na sheria za kuandika object.

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