বাংলায় জ্যাঙ্গো

আজকের পর্বে আমরা খরচ হিসাবের ফর্মটি সম্পুর্ণ করব। অর্থাৎ, আমরা http://localhost:8000/cost/add/ পেজ থেকেই আমাদের নতুন খরচের হিসাব যোগ করতে পারবো।

templates/costs/add_expense.html টেমপ্লেটকে আদর্শ রুপ দেয়।

{% extends 'base.html' %}

{% block content %}
    <form method="POST" class="form-horizontal"> {% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="btn btn-default">Save</button>
    </form>

{% endblock %}

আমাদের form কোডকে <form></form> টেমপ্লেট ট্যাগ এর মধ্যে প্রবেশ করিয়েছি। আমরা এই ফর্ম এর মাধ্যমে কিছু ডাটা save করব তাই আমাদের viewকে POST request পাঠাতে হবে। method=”POST” এই কাজটি করবে। {% csrf_token %} হচ্ছে একটি টেমপ্লেট ট্যাগ। ফর্ম এর মাধ্যমে সকল অনৈতিক কার্জক্রম থেকে আত্নরক্ষা করার জন্য জ্যাঙ্গো আমাদেরকে এই ট্যাগটি উপহার দিয়েছে। csrf_token সম্পর্কে বিস্তারিত দেখুন।

ফর্ম পুরন করে Save বোতাম চাপুন । কি হচ্ছে ? কিছুই হচ্ছে না। শুধু লেখাগুল মুছে যাচ্ছে।

আমাদের add_expense() ভিউ( def add_expense(request): ) request প্যারামিটার গ্রহন করে। এই প্যারামিটারটিকে আমরা ২ ধরনের request পাঠাচ্ছি। ১) যখন প্রথম পেজ লোড হয় তখন GET এবং ২)যখন ডাটা সহ পেজকে Save করি তখন POST রিকুয়েষ্ট । একটু যাচাই করা যাক ,

add_expense() এর শুরুতে একটি টেষ্ট করার জন্য print যুক্ত করি।

def add_expense(request):

print(“in add expense”)

…………………..

এখন http://localhost:8000/cost/add/ পাতাটিকে আবার রিলোড করে(F5) টার্মিনালে লক্ষ করি ।

আমাদের ভিউ /cost/add/ GET রিকুয়েষ্ট গ্রহন করেছে এবং Expense ফর্মটি শুন্য ফর্ম টেমপ্লেটে পাঠাচ্ছে। ফর্মটি পুরন করে Save বোতাম চেপে আবার টার্মিনালে লক্ষ করি।

এখন আমাদের ভিউ POST রিকুয়েষ্ট গ্রহন করেছে।

এখন আমাদের ভিউকে বলতে পারি, যদি তুমি POST রিকুয়েষ্ট পাও তাহলে ফর্মটি save করার ব্যাবস্থা কর। অন্যথায় টেম্পলেটে খালি ফর্ম দেখাও ।

if request.method == 'POST':
    ………….
else:
    form = ExpenseForm

এখন request এর সাথে যে ডাটা আমরা পেয়েছি তা ফর্ম ক্লাসের মধ্যে প্রবেশ করাব

if request.method == 'POST':
    form = ExpenseForm(request.POST)
else:
    form = ExpenseForm

request.POST আমাদের ফর্ম ডাটা বহন করছে। এখন ফর্ম পুরন করে Save বোতাম চাপুন। এখন কিন্তু আর ফর্ম খালি হয়ে যাচ্ছে না। এখন form = ExpenseForm(request.POST) কাজ করছে এবং পুরনকৃত ফর্ম দেখতে পাচ্ছি। save() ম্যাথড এর মাধ্যমে আমরা ফর্ম সেভ করতে পারি।

def add_expense(request):
    if request.method == 'POST':
        form = ExpenseForm(request.POST)
        form.save()
    else:
        form = ExpenseForm
    return render(request, 'cost/add_expense.html', {'form': form})

http://localhost:8000/cost/add/ পেজটি রিলোড দিয়ে ফর্ম পূরন করে Save বোতাম চাপি। কিছুই হচ্ছে না ? হতাশ হচ্ছেন কেন !!! খরচ তালিকার পাতায়( http://localhost:8000/cost/list/ ) গিয়ে দেখুন আপনার সর্বশেষ খরচটি যোগ হয়েছে। নিশ্চয় অনেক মজা পেয়েছেন। তাহলে আজকের সকল খরচ এভাবে যুক্ত করে ফেলুন।

আমরা যখন ফর্ম পূরন করে Save বোতাম চাপি তখন কোন পরিবর্তন দেখতে পাচ্ছি না। আমাদের ভিউকে আমরা বলতে পরি, ফর্ম Save হলে খরচ তালিকা পাতায় নিয়ে যাও

cost_management/views.py এর শুরুতে যুক্ত করি

from django.shortcuts import redirect

অতঃপর যুক্ত করি

if request.method == 'POST':
    form = ExpenseForm(request.POST)
    form.save()
    return redirect('cost-list')

এখানে ‘cost-list’ হচ্ছে cost_namagement/urls এর name=’cost-list’ থেকে পাওয়া URL এর নাম । 

সম্পূর্ণ ভিউ

def add_expense(request):

    if request.method == 'POST':
        form = ExpenseForm(request.POST)
        form.save()
        return redirect('cost-list')

    else:
        form = ExpenseForm
    return render(request, 'cost/add_expense.html', {'form': form})

বেশি বেশি খরচ করতে থাকুন আর আপনাার নিজর বানানো সফটওয়ার ব্যাবহার করে খরচের হিসাব রাখুন। আগামী পর্ব গুলোতে আমরা এই এপ্লিকেশনে আরো অনেক ফিচার যুক্ত করব।

আগের পোষ্ট    পরের পোষ্ট

15
Leave a Reply

avatar
0 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Comment authors
Recent comment authors
  Subscribe  
newest oldest most voted
Notify of