7 වන ඒකකය: Forms - දත්ත ඇතුළත් කිරීම
අපි CRUD වලින් 'Read' කොටස ඉගෙන ගත්තා. දැන් අපි 'Create' කොටස, එනම් පරිශීලකයාට අලුතින් සටහනක් ඇතුළත් කරන්න ඉඩ දෙන ෆෝරමයක් හදමු. HTML වලින් ෆෝරමයක් හදන එක ටිකක් වෙහෙසකර වැඩක්, නමුත් Django අපේ වැඩේ හරිම පහසු කරනවා.
Django ගේ සුපිරි බලය: `ModelForm`
පියවර 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/ වෙත ගොස් අලුතින් සටහනක් ඇතුළත් කර බලන්න. එය සාර්ථකව ඇතුළත් වූ පසු, ඔබව නැවතත් සටහන් ලැයිස්තුව වෙත යොමු කරනු ඇත!