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

Uncategorized

জ্যাঙ্গো পরিচিতি

by , on
March 21, 2018

জ্যাঙ্গো কি ?

জ্যাঙ্গো হচ্ছে পাইথন দ্বারা নির্মিত একটি মুক্ত প্রযুক্তির( Free and open source) ওয়েব এপলিকেশন ফ্রেমওয়ার্ক । এটি আবিষ্কৃত হয়েছিল ২০০৩ সালে Lawrence Journal-World পত্রিকার Application Developer দের হাত ধরে। পত্রিকার সংক্ষিপ্ত ডেডলাইনকে সামনে রেখে ডেভেলপারদের চাহিদা পূরন করতেই Django আবিষ্কার।

ফ্রেমওয়ার্ক কি ?

ফ্রেম বলতে আমরা বুঝি, যে কাজ বার বার করতে হয় তার একটি কাঠামোর দাড় করানো, যাতে ওই কাঠামো ব্যাবহার করে দ্রুত ওই কাজটি করা যায়। যেমন, আমরা সিমেন্টের তৈরী অনেক সুন্দর সুন্দর ডিজাইন দেখতে পাই। বার বার এই কাজ সহজে কারার জন্য একটি ফ্রেম তৈরী করা হয়। এরপর ফ্রেমে কাঁচামাল দিলেই সুন্দর ডিজাইন তৈরী হয়।
তেমনিভাবে ওয়েব ডেভেলপারদের বিভিন্ন প্রজেক্ট তৈরী করার সময় কিছু কমন কাজ বার বার করতে হয়। যেমনঃ অথেনটিকেশন, ডাটাবেজ কানেকশন, সেশন ইত্যাদি। এই কাজগুলোর মডিউল তৈরী করে যে প্লাটফর্ম দাড় করানো হয় তাকেই ফ্রেমওয়ার্ক বলে।

আবিষ্কারের ইতিহাস

জ্যাঙ্গো আবিষ্কারের ইতিহাস বলতে গিয়ে Django এর সহযোগী আবিষ্কারক Simon Wilson বলেন, “জ্যাঙ্গো আবিষ্কার করা হয় যখন তিনি এবং Adrian HolovatyLawrence Journal-World newspaper’ এ কাজ করতেন” ২০০৩ সালে। Adrian ইতমধ্যে Lawrance.com তৈরী করেছিলেন PHP দিয়ে এবং Simon ও ৫ বছরের অভিজ্ঞতা সম্পন্য PHP ডেভেলপার ছিলেন। তিনি বলেন, ” PHP দিয়ে বড় সাইট মেইন্টেইন করতে গিয়ে আমরা উভয়েই বিরক্ত ছিলাম, আমরা উভয়ের পাইথনের ভক্ত ছিলাম এবং ধন্যবাদ Mark Pilgrim কে তার Dive Into Python বইটির জন্য” ।

কেন ব্যাবহার করা হয়

পাইথন প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে তৈরি সবচেয়ে শক্তিশালী, রোবাস্ট, সিকিউর এবং ম্যাচিউর ওয়েব ফ্রেমওয়ার্কটি হল জ্যাঙ্গো! ছোট থেকে বড়, সাধারণ থেকে অসাধারন যেকোন ধরনের ওয়েবসাইট খুব সহজে এবং কম সময়ে তৈরি করতে এর জুড়ি নেই।

এর  সাহায্যে আপনি আপনার আইডিয়াকে কয়েক ঘন্টার মধ্যে ওয়েব এপলিকেশনে পরিনত করতে পারবেন।
বিভিন্ন কম্পানি এবং সরকারী প্রতিষ্ঠান তাদের Content management system, সামাজিক যোগাযোগ , সাইন্টিফিক প্লাটফর্ম সহ সকল ধরনের ওয়েব এপলিকেশন তৈরীর জন্য এই ফ্রেমওয়ার্ক ব্যাবহার করছেন।

জ্যাঙ্গো ব্যাবহার করে নির্মিত সাইট:

পরবর্তী পোষ্ট

Uncategorized

পাইথন জ্যাঙ্গো কোর্স

by , on
March 15, 2018

কোর্স সম্পর্কেঃ
বর্তমানে সবচেয়ে জনপ্রিয় প্রগ্রামিং ল্যাঙ্গুয়েজের মধ্যে অন্যতম হচ্ছে Python। এই কোর্সের মাধ্যমে আপনার প্রগ্রামিং শেখার পথ আরো সহজ ও সুন্দর হবে ইনশাআল্লাহ। কোর্সে ভর্তি হওয়ার জন্য আপনার কোন প্রগ্রামিং জানা জরুরী নয়। আপনার আগ্রহ এবং পরিশ্রমই যথেষ্ঠ। কোর্সের শুরু থেকেই প্রতি সপ্তাহে বাড়ির কাজ হিসেবে প্রচুর Problem Solve এবং জরুরী কিছু এলগরিদম করতে দেয়া হবে। জ্যাঙ্গো ( Django ) ক্লাসের সময় একটি ছোট Practice প্রজেক্ট করানো হবে। এতে প্রজেক্ট করতে করতেই জ্যাঙ্গো শেখার কারনে আপনার শেখার মজা বৃদ্ধি পাবে।
প্রথম থেকেই Git এবং Linux OS ব্যাবহারে অভ্যস্ত করা হবে।

৪ মাসের কোর্সের মেয়াদকাল শেষে ইনশাআল্লাহ আপনি জ্যাঙ্গো ফ্রেমওয়ার্ক ব্যাবহার করে পুর্নাঙ্গ প্রজেক্ট করার যোগ্য হয়ে উঠবেন। মূল কোর্সের পরবর্তি ২ মাসে  Agile Methodology অনুসরন করে সফটওয়ার বাজারে বিক্রয় উপযোগী একটি পুর্নাঙ্গ প্রজেক্টের MVP (Minimum Viable Product) তৈরী করা হবে। এই সময়ে প্রতি সপ্তাহে টিম মিটিং করা হবে।

সময়ঃ প্রতি  শুক্র ও শনি সকালঃ ৯ টা থেকে ১২ টা
সর্বমোট ক্লাসঃ ৩২ টি
সময়ঃ ৪ মাস, ৯৬ ঘন্টা
ফ্রি ক্লাসঃ ২৭ এপ্রিল শুক্রবার সকাল ৯ টা
ক্লাস শুরুঃ ২৮ এপ্রিল শনিবার সকাল ৯ টা
আসন সংখ্যাঃ ১৫ টি

কোর্স কারিকুলামঃ

  • Getting Started with Python3
  • Data structure
  • OOP -Object oriented Programing with python
  • Exception Handling
  • File Handling
  • Getting started with Django2
  • Basic Django ( models, views, templetes, urls, Forms)
  • Django Queryset
  • Class Based View
  • Django Rest API
  • Working with Postgresql Database
  • Version control with Git
  • Basic Concept of Freelancing and how to apply for job in freelance marketplace.

কোর্স ফিঃ ১০,০০০ টাকা (ভর্তির সময় ৫ হাজার এবং অবশিষ্ঠ ফি ১ মাস পর পরিশোধ করতে হবে।)
ঠিকানাঃ ও-২৩, মুসলিম সুইটস এর গলি, নুরজাহান রোড, মোহাম্মদপুর, ঢাকা

রেজিষ্ট্রেশনঃ রেজিষ্ট্রেশন লিঙ্ক

যোগাযোগঃ ফেচবুক পেজ ফেচবুক গ্রুপ, আমার ব্যাক্তিগত ফেচবুক গ্রুপ

মোবাইলঃ 01715251562, 01753163092

বিঃদ্রঃ ** কওমি মাদ্রাসা থেকে দাওরায়ে হাদিস ফারেগ, হাফেজ এবং ১ চিল্লার (+) সাথীদের জন্য পাইথন কোর্সে ২০% ছাড় ।
** মেয়েদের জন্য ভর্তির সুযোগ না দিতে পারায় দুঃখিত
** আমাদের ল্যাব সেটাপ নেই। কোর্স চলাকালীন সময়ে নিজস্ব ল্যাপটপ আনতে হবে।

আয়োজনেঃ

 

Uncategorized

কুইজ – ১

by , on
March 13, 2018

আপনার ক্লাসের বন্ধুদের রোল নাম্বার অনুসারে একটি Dictionary তৈরী করুন। যেমনঃ

friends = { 1: "Abu Talib" , 
                 2: "Abdur Rahman",
                 3: "Ibne Jahash" 
              }

এখন একটি ফাংশন লিখুন assalam(friends_roll). যদি friends তালিকায় রোল নম্বর পায়, তাইলে রিটান্ট করবে,
Assalamualaikum Abu Talib, How are you?’

যদি কোন বন্ধু না খুজে পায় তাহলে রিটার্ন করবে

‘Assalamualaikum, Who are you brother?’

দেখি আপনি সমাধান করতে পারেন কি না, কমেন্টে আপনার স্ক্রিনশট দিতে ভুলবেন না কিন্তু

Uncategorized

Learn Django with Project

by , on
February 18, 2018

কোর্স সম্পর্কেঃ

আপনার পাইথন Data Structure, OOP সম্পর্কে ভাল ধারনা থাকতে হবে। ১৬ টি ক্লাস Django, Git, Manage Project with Agile Methodology এর উপর নেয়া হবে। অতঃপর সতন্ত্র আইডিয়া নিয়ে প্রজেক্ট শুরু করা হবে। প্রজেক্টের জন্য মার্কেট এনালাইসিস, প্রজেক্ট ম্যানেজমেন্ট টুলস ( GitHub Project Management Tools ), এবং অন্যান্য Agile Methodology অনুসরন করা হবে। ৩ মাসের মধ্যে MVP ( minimum viable product ) তৈরী করা হবে ইনশাআল্লাহ।

কোর্স ফিঃ

৭০০০ টাকা, জাতীয় বিশ্ববিদ্যালয়ের অধীনের কলেজ( DIIT, IST, Northern College etc) এবং পলিটেকনিক এ অধ্যায়নরত ছাত্রদের জন্য  ৫০০০ টাকা ।

সময়ঃ শুক্র + শনিবার সকাল ১০ টা

প্রতি ক্লাস ২ ঘন্টা

ক্লাস শুরুঃ ১৬ ফেব্রুয়ারী ১০১৮ ইং

প্রশিক্ষকঃ রবিউল ইসলামহারুনুর রশিদ

স্থানঃ ১/২, নর্দান কলেজ, আসাদ গেট,  ঢাকা।

কারিকুলামঃ

Introducing

  • How The Websites Works
  • What Is Web Framworks
  • What is Django
  • MTV/MVC Patterns
  • What is Virtual Environment

 

Django Project

  • Setup Environment
  • Install Django
  • Create First Project
  • Introducing Project Files
  • Introducing Django Apps
  • Project VS App Disqussion

 

Django App

  • Create App
  • Introducing App Files
  • Creating new View
  • Making URL Router
  • Running Devlopment Server

 

Database and Models

  • Django Model
  • Database Configuration & Migration
  • Introducing Django shell
  • Playing with Django ORM/Queryset
  • Introducing Django Admin Panel

 

‘CRUD’ Views

  • Create Create/Read/Update/Delete views
  • Django Template
  • Django Form
  • Routers Configuarations in Depth

 

Authentications and Autharizations

  • Django Auth App
  • Introducing Authentication and Autharization
  • Session/Coockies Overview
  • login required/ permission required views

 

All in One Simple Project

  • Making A simple Blog Site!

 

Class Based Views

  • Introducing CBV
  • Class Based Views VS Function Based Views, Pros/Cons

 

Django Rest Framework basic

Git + Complete Project

** আপনার পাইথন জানা না থাকলে আমাদের পাইথন কোর্স টি শুরু হওয়া পর্যন্ত অপেক্ষা করতে পারেন।

Uncategorized

পাইথন জ্যাঙ্গো কোর্স

by , on
February 18, 2018

কোর্স সম্পর্কেঃ
আপনাকে python ব্যাসিক অথবা যে কোন প্রগ্রামিং এর ব্যাসিক( variable, array, condition, loop ) অবশ্যই জানা থাকতে হবে। প্রথম ৩ মাস প্রতি সপ্তাহে বাসার কাজ হিসেবে প্রচুর Problem solving, Algorithm, django task দেয়া হবে। নিজে নিজে গুগল সার্চ করে নতুন কিছু শিখে নেয়ার মানসিকতা থাকতে হবে।  পরবর্তী ৩ মাস আমার তত্বাবধানে AGILE methodology ব্যাবহার করে একটি পুর্নাঙ্গ প্রজেক্ট করানো হবে।   বোনের পরীক্ষা, ভায়ের বিয়ে এসব অজুহাতে ক্লাস মিস দেয়া চলবে না।

সময়: ৫ জানুয়ারী সকাল ১০ টা Demo ক্লাস। ১২ জানুয়ারী থেকে মুল ক্লাস শুরু হবে। শুক্র + শনি সকাল ১০ টা

কোর্স সময়কালঃ সর্বমোট ৬ মাস।

কোর্স ফিঃ ১০,০০০ টাকা (ভর্তির সময় ৪ হাজার + ২ মাসের মধ্যে অবশিষ্ঠ ৬ হাজার পরিশোধ করতে হবে)

কোর্স কারিকুলাম:  https://docs.google.com/document/d/1B9iCbKS-jlyMsZWM0QjoLH0AQeds3RchoUYeXaDEOnE/edit?usp=sharing

ট্রেইনারঃ হারুনুর রশিদ , রবিউল ইসলাম

যোগাযোগঃ

Contact: 01715251562, 01910265211, 017531163092

ফেচবুক:  https://www.facebook.com/groups/banglaidjango/

https://www.facebook.com/Harun.m.r

ঠিকানাঃ Northern College,
1/2 Asad gate road, Mohammadpur, Dhaka

Uncategorized

Html Form ব্যাবহার করে ইউজার ইনপুট নেয়া

by , on
January 1, 2018

আসসালামুয়ালাইকুম, আশা করি আপনাদের জ্যাঙ্গো শেখা বেশ ভালই চলছে। প্রগ্রামিং করার সময় আমরা ইউজারের কাছ থেকে ডাটা ইনপুট নেয়ার জন্য input() ফাংশন ব্যাবহার করি। আমাদের জ্যাঙ্গো এপ্লিকেশনে আমরা ইউজারের কাছ থেকে ডাটা নিব কিভাবে ? উত্তর হল ফর্ম। আমরা ফর্ম ব্যাবহার করে ইউজারের কাছ থেকে ইনপুট নেব এবং ইউজারের দেয়া ডাটা দিয়ে চমৎকার সব কাজ করব।

প্রথম পর্বে আমরা Html ফর্ম ব্যাবহার করে ইউজারের কাছ থেকে ডাটা নিব। ২য় পর্বে জ্যাঙ্গো ফর্ম ব্যাবহার করে ইউজারের কাছ থেকে ডাটা নিব এবং ডাটা প্রসেস করে ইউজারকে দেখাব।

App তৈরী

user_info নামে নতুন একটু এপ তৈরী করি।

python manage.py startapp user_info

settings.py এ user_info যুক্ত করি।

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog_post',
    'cost_management',
    'information',
    'user_info'
]

Views তৈরী

এই কাজটি করার জন্য প্রথমে আমরা একটি ভিউ তৈরী করি।  যেই ভিউ এর মাধ্যমে আমরা একটি html ফর্ম দেখাব।

user_info/views.py

from django.shortcuts import render


def show_user_info(request):
    """
    A django view to show user's Information
    """
    return render(request, 'user_info/user_info.html')

Templates/user_info এর মধ্যে user_info.html তৈরী করি । এই ভিউকে দেখার জন্য url তৈরী করি। user_info/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('info/', views.show_user_info, name='user-info'),

]

Base urls ( banglaidj/urls.py) এ user_info কে ইনক্লুড করে দেয়

urlpatterns = [
   -------------
   -------------
    path('user/', include('user_info.urls'), name='user'),

]

এখন ব্রাউজারে http://localhost:8000/user/info/ দিলে একটি ফাকা পেজ দেখতে পাবেন কারন আমরা user_info.html এ কিছুই এখনো লিখিনি।

user_info.html এ একটি HTML ফর্ম লিখিঃ

{% extends 'base.html' %}

{% block content %}
<h1>খরচ খুজুন </h1>

<form action="/user/info/" method="post">
        {% csrf_token %}
        তোমার নাম কি ? <input type="text" name="user_name">
        <input type="submit" value="ঠিক আছে">

</form>

{% endblock %}

আমাদের এই ভিউ এর প্রকৃত ইউআরএল ছিল localhost:8000/user/info । ব্রাউজারে প্রবেশ করালে একটি ফর্ম দেখতে পারব।এখন আমরা ফর্মের মাধ্যমে কিছু ডাটা show_user_info ভিউ এর মধ্যে পাঠাতে চাই এবং এই ডাটা নিয়ে আমরা চমৎকার কিছু কাজ করব।

csrf_token কি ?

একটা ফর্ম দিয়ে আসলে সার্ভারে POST রিকুয়েষ্ট পাঠানো হয়। ধরুন আপনার একটি ফর্ম আছে mysite.com/sell/ এ । ফর্ম এর কাজ হচ্ছে এই url এ POST রিকুয়েষ্টের মাধ্যমে কিছু ডাটা পাঠাবে। একজন ক্র্যাকার চাইলে ওই ইউআরএল এ আপনার ফর্ম ব্যাবহার না করে cUrl বা postman ব্যাবহার করে POST রিকুয়েষ্ট পাঠাতে পারে এবং ডাটার মধ্যে তার হ্যাকিং এর ডাটা পাঠিয়ে দিতে পারে।

এই বিপদ থেকে রেহায় পেতে জ্যাঙ্গো তার ফর্মের মধ্যে গোপনে একটি টোকেন জেনারেট করে দেয় এবং ফর্ম সাবমিট করা হলে ডাটার সাথে ওই টোকেনও পাঠিয়ে দেয় এবং টোকেনটি চেক করে। বিস্তারিত

HTTP Request কি?

যখন আমাদের ব্রাউজার আমাদের সামনে কোন ওয়েব পেজ দেখায় তখন ব্রাউজার আসলে কি করে? ব্রাউজার আসলে একটা ওয়েব সার্ভারের কাছে request করে। ভাই তুমি আমাকে প্লিজ একটা পেজ দেখাও। সার্ভার তখন ব্রাউজারের রিকুয়েষ্ট কে নিয়ে পরীক্ষা নিরীক্ষা করে দেখে ব্রাউজার কি ধরনের রিকুয়েষ্ট করেছে এবং সেই অনুযায়ী একটা response পাঠায় যেমন: “Hello browser”।

যখন ব্রাউজারে  localhost:8000/cost/search প্রবেশ করানো হয় তখন ব্রাউজার সার্ভারের কাছে request পাঠাচ্ছে যার টাইপ GET কারন ব্রাউজার তখন সার্ভারের কাছ থেকে কিছু গ্রহন করছে এবং সার্ভারে response হিসেবে user_info.html ব্রাউজেরর কাছে পাঠিয়ে দিচ্ছে।

পরীক্ষা করার জন্য show_user_info ভিউ এর মধ্যে লিখুন                               print(“request type: “, request.method) এবং ব্রাউজার refresh করুন। টার্মিনালে লক্ষ করুন।

যেহেতু আমরা ফর্মের মাধ্যমে কিছু ডাটা সার্ভারের কাছে পাঠাচ্ছি তখন সার্ভারের  request এর ধরন হবে POST। ফর্মে কিছু লিখে submit বাটনে ক্লিক করে আবারও টার্মিনালে লক্ষ করি।

অর্থাৎ এখন আমরা যেহেতু কিছু ডাটা সার্ভারের কাছে পাঠাচ্ছি তাই আমাদের রিকুয়েষ্ট টাইপ POST ।

ডাটা নিয়ে খেলা করুনঃ

আচ্ছা, আমরা ফর্মে যে ডাটা পাঠালাম এটা পাব কিভাবে ? একটু অপেক্ষা করুন । আগে দেখে নিই সার্ভারে আসলে কি কি ডাটা পোষ্ট হয়েছে। view এর মধ্যে আবার লিখুন print(“request data”, request.POST)

def show_user_info(request):
    print("request data: ", request.POST)
    context = {}
    return render(request, 'user_info/user_info.html', context)

ফর্মে hello লিখে সাবমিট করুন এবং টার্মিনালে লক্ষ করুন

GET  রিকুয়েষ্টের ক্ষত্রে request data: <QueryDict: {}>কোন ডাটা নেই কারন আমরা কিছু পোষ্ট করি নি। POST রিকুয়েষ্টের ক্ষেত্রে QueryDict এর মধ্যে আমরা csrfmiddlewaretoken ও user_name এর ভ্যালু পেয়েছি।

user_name এর ভ্যালু আমরা পেতে পারি এভাবে

user_name_value = request.POST["user_name"]

লক্ষ করুন, এই কোডটি শুধু পোষ্ট রিকুয়েষ্টেই ডাটা দেবে। তাই আমরা লিখতে পারি , যদি রিকুয়েষ্ট POST হয় তাহলে ফিল্ডের ডাটা নাও ।

def show_user_info(request):
    if request.method == 'POST':
        user_name_value = request.POST["user_name"]
        print("Your name is: ", user_name_value)

    context = {}
    return render(request, 'user_name/user_name.html', context)

এখন ফর্মটি পুরন করে টার্মিনালে লক্ষ করলে দেখবেন Your name is: হারুন লেখা উঠছে।

এখন একটা ছোট্ট খেলা করি। আমরা ইউজারের কাছ থেকে নাম ইনপুট নেব এবং ইউজারকে বলবঃ আসসালামুয়ালাইকুম বন্ধু অমুক , তুমি কেমন আছ ?

views.py

from django.shortcuts import render


def show_user_info(request):
    """
    A django view to show user's Information
    """
    print("request data: ", request.POST)
    if request.method == 'POST':
        user_name = request.POST["user_name"]
        context = {"name": user_name}
        return render(request, 'user_info/user_info.html', context)
    return render(request, 'user_info/user_info.html')

 

user_info/user_info.html

{% extends 'base.html' %}

{% block content %}
<h1>স্বাগতম বন্ধু !! </h1>

<form action="/user/info/" method="post">
        {% csrf_token %}
        তোমার নাম কি ? <input type="text" name="user_name">
        <input type="submit" value="ঠিক আছে">

</form>
    {% if name %}
       <p> আসসালামুয়ালাইকুম বন্ধু {{ name }}, তুমি কেমন আছ ?</p>
    {% endif %}

{% endblock %}

বাংলায় জ্যাঙ্গো টিউটোরিয়াল সিরিজের আগামী পর্বে  আমরা ইউজারের কাছ থেকে আরো কিছু তথ্য নিয়ে ইউজারকে দেখাবো।

<< সূচিপত্র

 

Uncategorized

রেজিষ্ট্রেশন

by , on
October 26, 2017

আসসালামুয়ালাইকুম,

কেমন চলছে আপনার জ্যাঙ্গো শেখা ? আশা করি মাতৃভাষায় জ্যাঙ্গো ফ্রেমওয়ার্ক শিখতে পেরে আপনার বেশ ভালই লাগছে। গত পর্বে আপনি শিখেছিলেন কিভাবে লগিন পেজ বানাতে হয়। আজকে আমরা দেখব কিভাবে আপনি রেজিষ্ট্রেশন পেজ বানাবেন।

সৃতিচারনঃ

লগিন পেজ তৈরী করার সময় আপনি urls.py ( যেখানে settings.py রয়েছে) এ একটি url তৈরী করেছিলেন /login/ নামে যেটা views.py ( যেখানে settings.py রয়েছে) এর user_login নামের একটি ভিউ কে কল করে এবং এই ভিউ এর মধ্যে লগিন করার বাকি কাজগুলো সম্পন্য করেছিলেন । এই কাজটি আপনি আলাদা এপ এর মধ্যেও করতে পারতেন। আজও আমরা ঠিক একই ধারায় রেজিষ্ট্রেশন সম্পন্য করব।

রেজিষ্ট্রেশনঃ

কোন ওয়েবসাইটে রেজিষ্ট্রেশন করার জন্য আমরা website_url/signup এরকম লিঙ্ক এ প্রবেশ করি। সুতরাং urls.py ( যেখানে settings.py রয়েছে) নতুন url তৈরী করি। যেটি views.py এর user_signup কে কল করবে।

banglaidj/urls.py

# banglaidj/urls.py

from django.urls import path, include
from django.contrib import admin
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('signup/', views.user_signup, name='signup'),
    path('login/', views.user_login, name='login'),
    path('logout/', views.user_logout, name='logout'),
]

banglaidj/views.py

#banglaidj/views.py

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth import authenticate, login, logout

def user_signup(request):
    return render(request, 'signup.html')

templates/signup.html

{% extends "base.html" %}

{% block content %}
  <h1>রেজিষ্ট্রেশন</h1>

{% endblock content %}

এখন ব্রাউজারে localhost:8000/signup প্রবেশ করালে শুধু লেখা একটি পেজ দেখতে পাবেন । কিন্তু রেজিষ্টেশন করার কোন ফর্ম নেই।

ধৈর্য ধরুন , এখন আমরা একটা ফর্ম যুক্ত করব। জ্যাঙ্গো আপনার কাজের সুবিধার জন্য একটা রেজিষ্ট্রেশন ফর্ম ক্লাস তৈরী করে রাখছে। ক্লাসটা ইম্পোর্ট করি ।

from django.contrib.auth.forms import UserCreationForm

user_signup ভিউ এর মধ্যে ফর্ম ক্লাসকে  কল করি। এবং টেমপ্লেটে পাঠানোর জন্য render ফাংশনের মধ্য লিখে ফেলিঃ

from django.contrib.auth.forms import UserCreationForm

def user_signup(request):
    form = UserCreationForm()
    return render(request, 'signup.html',{'signup_form':form})

এখন signup.html এর মধ্যে signup_form ভ্যারিয়েবলকে কল করলেই আমরা ফর্মটি দেখতে পারব

{% extends "base.html" %}

{% block content %}
  <h1>রেজিষ্ট্রেশন</h1>

    <form class="form">
    {{ signup_form }}
    </form>

{% endblock content %}

 

UserCreationForm রেজিষ্টেশন ফিল্ডগুলো নিয়ে এসেছে। কিন্তু চেহারার অবস্থা খুব খারাপ । একটি সুন্দর চেহারা দান করিঃ

{% extends 'base.html' %}
{% block content %}
<h1>রেজিষ্ট্রেশন</h1>
<form class="form" method="post" action="/signup/">
    {% csrf_token %}
    {{signup_form.as_p}}
    <input type="submit" value="submit" class="btn btn-primary" />
</form>

{% endblock %}

method ও action নিয়ে ১ম পর্বে আমরা আলচনা করেছি।

Uncategorized

দোকান – প্রজেক্ট প্লানিং

by , on
October 23, 2017

বাংলায় জ্যাঙ্গো টিউটোরিয়ালের আজকের পর্বে আপনাদের স্বাগতম। সচরাচর টিউটোরিয়াল সাইটে দেখা যায় তথ্যভিত্তিক টিউটোরিয়াল লেখা হয়। যার ফলে শিক্ষার্থীর জন্য জ্যাঙ্গো আয়ত্তে আনতে কঠিন হয়। এক দিক দিয়ে টিউটোরিয়াল পড়তে থাকি, আর এক দিক দিয়ে ভুলতে থাকি। তাই যদি প্রথম থেকেই প্রজেক্ট ভিত্তিক শেখা হলে শেখার আনন্দ অনেক বেড়ে যায়। একঘেয়েমী ভাবও কমে যায়। তাই আমরা বাংলায় জ্যাঙ্গো টিউটোরিয়াল সিরিজে প্রজেক্ট ভিত্তিক প্রক্রিয়ায় শিখব।

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

মনে করুন আপনার একটি দোকান রয়েছে। আপনি আপনার দোকানের পণ্য গুলোর তালিকা রাখতে চান। দোকানে এখন কোন পণ্য কতগুলো রয়েছে, একটা পন্য দোকানে যোগ হলে তালিকা আপডেট হবে, কোন পণ্য বিক্রয় করলে তালিকা থেকে পন্যের সংখ্যা কমে যাবে এবং দিনশেষে রিপোর্ট দেখতে চান কোন পণ্য কতগুলো বিক্রয় হয়েছে। এই কাজগুলোকে বলে Inventory Management System. আমারা এখন ধীরে Inventory Management System তৈরী করব।

প্রথমে আমাদের কাজকে কয়েকটি ভাগে ভাগ করে নেই;

) কোন পণ্য কতগুলো রয়েছে তার তালিকা তৈরী

– Database design

পন্যের তালিকা Front Page এ দেখানো

) নতুন পণ্য যোগ করা

ফর্ম তৈরী

আগের পন্যের সাথে নতুন পণ্য যোগ করা

) পণ্য বিক্রয় করা

ফর্ম তৈরী

আগের পন্য থেকে বিয়োগ করা

) রিপোর্ট দেখা

এখন আমরা যে কাজের তালিকা তৈরী করলাম তা trello.com এ তুলে ফেলি ।

create New board এ গিয়ে নতুন বোর্ড তৈরী করি

এখন কয়েকটি লিষ্ট তৈরী করি

আমরা যে তালিকাটি তৈরী করেছি তা To Do লিষ্টের মধ্যে লিখে ফেলি

আমাদের ডকুমেন্টেশন তৈরী এখন আমরা কোড করা শুরু করব।

বাংলায় জ্যাঙ্গো টিউটোরিয়ালের সাথেই থাকুন।পরবর্তি পোষ্ট থেকে আমরা  আমাদের “দোকান” প্রজেক্টের কোড করা শুরু করব  ।

Uncategorized

কিভাবে একটি প্রজেক্ট শুরু করবেন ?

by , on
October 5, 2017

বাংলায় জ্যাঙ্গো টিউটোরিয়াল সাইটে আপনাদের স্বাগতম। ইতমধ্যে আপনারা জ্যাঙ্গো এর ব্যাসিক কিছু কাজ শিখে ফেলেছেন। এখন আপনি চাইলে বড় বড় সফটওয়ার তৈরী করে ফেলতে পারেন। আমাদের মাথায় অনেক আয়ডিয়া ঘুরঘুর করে । আপনি চাইলে এখন আপনার আইডিয়া বাস্তবায়ন করে ফেলতে পারেন।

সফটওয়ার প্রজেক্ট তৈরী করার সময় আমরা শুরুতেই কোড করতে শুরু করে দেয়। তাতে দুই দিন কোড করার পর দিশা হারিয়ে ফেলি এবং আপনার আইডিয়া বাস্তবায়ন করা অনেক কঠিন হয়ে পরে। তাই কিছু নিয়ম নিতি মেনে আপনাকে প্রজেক্ট শুরু করতে হবে।

প্রশান্তি অনুভব করুন

নিজের মধ্যে এক ধরনের প্রশান্তি অনুভব করুন। আপনি অনেক মজার একটি কাজ করতে যাচ্ছেন। আপনি যা করতে যাচ্ছেন তা হয়তো পৃথিবীতে আর কেউ কখোনো করে নি। চিন্তা করুন আপনার আইডিয়াটি কি কাজে আসতে পারে। কেন আপনার আইডিয়া অন্যদের থেকে আলাদা।

Start Small – সহজ শুরু

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

অন্যদের সাথে ভাগ করে নিন

আপনার আইডিয়া নিয়ে অন্যদের সাথে আলোচনা করুন। অনেক কটু কথা শুনতে পাবেন। ধৈর্য ধরে শুনুন, নতুন নতুন কিছু জানতেও পারবেন। বন্ধুরা বলবে ধুর এটা তো অমুক কম্পানিই দিচ্ছে, এটা তো ১০ বছর আগে থেকেই আছে। চিন্তা করুন অন্যেরটা থেকে আপনার আইডিয়ার কি পার্থক্য।  আপনার আইডিয়াকে ভালোবাসুন।

লিখে ফেলুন 

আপনি যে আইডিয়া বাস্তবায়ন করতে চান তা একটি খাতায় লিখে ফেলুন। প্রথম প্রথম আপনার আইডিয়া ঝাপসা থাকবে, কিভাবে শুরু করবেন বুঝতে পারবেন না। তাই কিছু সময় ব্যায় করে আইডিয়াটি লিখে ফেলুন। ধীরে ধীরে আপনার আইডিয়া অনেক পরিষ্কার হবে এবং নতুন অনেক কিছু আবিষ্কার করতে পারবেন।লেখার ক্ষেত্রে কিছু বিষয় লক্ষ্য রাখুনঃ

  • আপনার সফটওয়ারটি কোন কোন সমস্যার সমাধান করবে?
  • আপনার সফটওয়ারটির লক্ষ কি ?
  • কে কে আপনার সফটওয়ারটি ব্যাবহার করতে পারে?

এখন আপনার প্রজেক্টের কি কি ফিচার হতে পারে তার একটি লিষ্ট তৈরী করুন। লিষ্টের মধ্যে থেকে minimum viable product (MVP) নির্বাচন করুন। অর্থাৎ আপনার সফটওয়ার এ নুন্যতম কি কি ফিচার থাকবে তার একটি লিষ্ট আলাদা করুন। এখন এই ফিচারগুলো নিয়ে আপনার মুল কাজ শুরু হবে।

MVP ফিচারগুলোকে কয়েকটি ছোট ছোট ভাগে ভাগ করুন। যেমন একটি ব্লগ সাইট করতে গেলে যে ভাগগুলো হতে পারে:

  • লগিন
  • রেজিষ্ট্রেশন
  • পোষ্ট লিষ্ট দেখানো
  • কমেন্ট
  • সোশাল লগিন

KanBan বোর্ড তৈরী করুন

এখন আপনার ছোটছোট ভাগগুলো নিয়ে একটি ব‌োর্ড তৈরী করুন। অনলাইনে কাজটি করার জন্য trello.com ব্যাবহার করতে পারেন।  Todo, Working, Testing, Done এরকম কয়েকটি ভাগ রাখতে পারেন। প্লানিংগুলো Todo অংশে তালিকা তৈরী করুন।  সবার প্রথম যে কাজরি করবেন সেটি Todo থেকে নিয়ে  Working অংশে রাখবেন। এই কাজটি হয়ে গেলে Testing এবং Testing শেষ হলে Done অংশে রাখুন। এভাবে একটা কাজ শেষ হলে আরেকটি কাজ শুরু করুন।

এই প্রক্রিয়ায় খুব সহজে আপনি আপনার প্রজেক্ট ম্যানেজ করতে পারবেন এবং কোড করতে সময় ও কম লাগবে এবং সাচ্ছন্দ বোধ করবেন।

পরবর্তি পোষ্ট

Uncategorized

transaction ব্যাবহার করে database roll back

by , on
September 28, 2017

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

১। student_list

২্। student_profile

এখন শর্ত হল যদি দুইটা টেবিলেই ডাটা না ইনসার্ট হয় তাহলে কোন টেবিলেই ডাটা ইনসার্ট হবে না। কারন অনেক সময় student_list এ ডাটা ইনসার্ট হয়ে গেল কিন্তু student_profile এ ডাটা  ইনসার্ট করতে গিয়ে কোন সমস্যার কারনে ডাটা ইনসার্ট হল না। এখন তাহলে আমাদের student_list টেবিল থেকেও ডাটা ফিরিয়ে আনতে হবে। এই ধারনাটিকে বলে ডাটাবেজ রোলব্যাক।

জ্যাঙ্গো এই কাজটি খুব সহজে করার জন্য transaction নামে একটা মডিউল দিচ্ছে। tansaction.atomic ব্যাবহার করে কিভাবে কাজটি করা যায় দেখে নিই:

from django.db import transaction

@transaction.atomic
def create_student(request):
    Student.objests.create(...)
    StudentProfile.objects.create(...)

try, execption ব্যাবহার করে কাজটি করার জন্য

from django.db import transaction


def create_student(request):
    try:
        with transaction.atomic():
            Student.objests.create(...)
            StudentProfile.objects.create(...)
    except:
        do_something

 

আশা করি এখন খুব সহজে ডাটাবেজ roll back এর কাজটি করতে পারবেন