7 වන ඒකකය: Forms - දත්ත ඇතුළත් කිරීම

අපි CRUD වලින් 'Read' කොටස ඉගෙන ගත්තා. දැන් අපි 'Create' කොටස, එනම් පරිශීලකයාට අලුතින් සටහනක් ඇතුළත් කරන්න ඉඩ දෙන ෆෝරමයක් හදමු. HTML වලින් ෆෝරමයක් හදන එක ටිකක් වෙහෙසකර වැඩක්, නමුත් Django අපේ වැඩේ හරිම පහසු කරනවා.


Django ගේ සුපිරි බලය: `ModelForm`

හිතන්න, ඔයා `Note` model එක හැදුවා (ඒකකය 4). ඒකෙ `title` සහ `content` කියලා fields දෙකක් තිබුණා. දැන් ඔයාට ඒ fields දෙකට අදාළව HTML form එකක් හදන්න ඕන. `ModelForm` වලින් වෙන්නේ, Django ඔයාගේ model එක දිහා බලලා, ඒකට අදාළ සම්පූර්ණ HTML form එක, validation rules එක්කම, ඉබේම හදලා දෙන එකයි!

පියවර 1: `forms.py` ගොනුව සහ `NoteForm` එක සෑදීම

පළමුව, අපේ `notes` app එක ඇතුළේ `forms.py` නමින් අලුත් file එකක් සාදන්න. ඉන්පසු, පහත කේතය එයට ඇතුළත් කරන්න.

# notes/forms.py
from django import forms
from .models import Note

class NoteForm(forms.ModelForm):
    class Meta:
        model = Note
        fields = ['title', 'content']
        widgets = {
            'title': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'සටහනේ මාතෘකාව'}),
            'content': forms.Textarea(attrs={'class': 'form-control', 'placeholder': 'ඔබේ සටහන මෙතන ලියන්න...'}),
        }

බලන්න, අපි කළේ `Note` model එකෙන් `title` සහ `content` කියන fields දෙක පාවිච්චි කරලා form එකක් හදන්න කියලා Django ට කිව්ව එක විතරයි. `widgets` කියන කොටසින් අපි Bootstrap CSS class එකතු කරලා form එක ලස්සන කරගත්තා.

පියවර 2: Form එක පෙන්වන සහ දත්ත බාරගන්නා View එක සෑදීම

දැන් මේ form එක පරිශීලකයාට පෙන්වන්නත්, submit කළාට පස්සේ ඒ දත්ත අරගෙන database එකේ save කරන්නත් අපිට view එකක් ඕන. `notes/views.py` ගොනුවට ගොස් පහත function එක එකතු කරන්න.

# notes/views.py
from django.shortcuts import render, redirect # redirect එක import කරගන්න
from .forms import NoteForm # අපේ NoteForm එක import කරගන්න

# ... notes_list view එක මෙතන තියෙනවා ...

def create_note(request):
    if request.method == 'POST':
        form = NoteForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('notes-list') # save වුණාට පස්සේ notes list එකට යවන්න
    else:
        form = NoteForm()
    
    context = {'form': form}
    return render(request, 'note_form.html', context)

පියවර 3: Template එක සහ URL එක සකස් කිරීම

අවසාන වශයෙන්, form එක පෙන්වන්න template එකක් සහ ඒකට අදාළ URL එකක් හදමු.

1. **`note_form.html` Template එක:** `templates` folder එකේ `note_form.html` නමින් file එකක් සාදා පහත කේතය ඇතුළත් කරන්න.

<!-- notes/templates/note_form.html -->
{% extends 'base.html' %}

{% block content %}
<h1>අලුත් සටහනක් ඇතුළත් කරන්න</h1>
<form method="POST">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" class="btn btn-primary mt-3">Save Note</button>
</form>
{% endblock content %}

මෙහි `{{ form.as_p }}` කියන එකෙන් වෙන්නේ, Django ඉබේම හදපු form එක `

` tags ඇතුළේ ලස්සනට පෙන්වන එකයි. `{% csrf_token %}` කියන්නේ ආරක්ෂාව සඳහා අත්‍යවශ්‍ය tag එකකි.

2. **URL එක:** `notes/urls.py` ගොනුවට ගොස් අලුත් path එක එකතු කරන්න.

# notes/urls.py
# ...
urlpatterns = [
    # ...
    path('notes/', views.notes_list, name='notes-list'),
    path('notes/new/', views.create_note, name='note-create'), # අලුත් URL එක
]
දැන් පරීක්ෂා කර බලන්න!
Server එක run කර, http://127.0.0.1:8000/notes/new/ වෙත ගොස් අලුතින් සටහනක් ඇතුළත් කර බලන්න. එය සාර්ථකව ඇතුළත් වූ පසු, ඔබව නැවතත් සටහන් ලැයිස්තුව වෙත යොමු කරනු ඇත!