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

Uncategorized

Learn Python with complete web development project

by , on
July 9, 2018

Description

Python is now the best programming language to learn in 2018. Python is very easy to learn and you will find it in web application development, machine learning, data science, desktop app, hardware programming etc.

Khidmah It, leading software training company in Dhaka,  is offering  web application development course with complete project. Are you beginner in programming ? no problem, if you have passion, dedication, you can learn from scratch .

What we learn?

  • Python from Scratch to Advance
  • Django Basic to Mid level
  • Linux, Git
  • Complete real life project following Agile Methodology.
  • problem solving
  • Basic Algorithm

About Course:

Time: Friday, Saturday 3 P.M

Total class: 32

Duration: 4 month ( 96 hours)

Free Class: 3 August 2018

Main class: 4 August 2018

Course Fee: 10,000 tk

Address: O-23, Muslim sweets goli, Nur-Jahan road, Mohammadpur, Dhaka

** To enroll this course, Fill up registration form and join to our free class on 3 August

Course curriculum:

  • Getting Started with Python3
  • Data structure
  • OOP -Object oriented Programing with python
  • Exception Handling
  • File Handling
  • Flask framework basic
  • 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.

Offers:

  1. Skilled programmer ( any language) who attended any programming contest (online/offline) and got good score, will get up to 30% discount as his skill. 
  2. For Hafiz ( Quran) , completed Dawraye Hadith ( maolana ) and pass 40 day’s chilla in Tablig jamat,  20% discount in course fee.

 Contact

Contact: Facebook Page Facebook Group, Banglai-django Facebook group

Phone: 01715251562, 01753163092

Note:

2. Women should maintain hizab as  Islamic shariah

3. We have no lab setup. You have to bring your own laptop with Linux OS.

4. If someone fail to attend some class, backup class will available.

5. Our class assistant will support you to solve any problem.

Uncategorized

পাইথন ব্যাবহার করে চতুর্ভূজ দিয়ে বৃত্ত আঁকি

by , on
April 4, 2018

পাইথনের turtle মডিউল ব্যাবহার করে চমৎকার গ্রাফিক্সের কাজ করা যায়। নিচের কোড টুকু প্রথমে কপি পেষ্ট করে টার্মিনালে রান করুন। এরপর পড়ে বোঝার চেষ্টা করুন

import turtle

def draw_square():
    window = turtle.Screen()
    window.bgcolor("red")
    
    brad = turtle.Turtle()
    brad.shape("turtle")
    brad.color("yellow")
    brad.speed(5)
    counter = 0
    while counter < 36:
        brad.forward(100)
        brad.right(90)
        brad.forward(100)
        brad.right(90)
        brad.forward(100)
        brad.right(90)
        brad.forward(100)
        brad.right(100)
        counter += 1

    window.exitonclick()

if __name__ == "__main__":
    draw_square()

Uncategorized

১ম ধাপ – প্রডাক্ট লিষ্ট তৈরী

by , on
March 28, 2018

আসসালামুয়ালাইকুম,
আপনার জ্যাঙ্গো শেখা কেমন চলছে ? আশা করি আপনি জ্যাঙ্গো নিয়ে ছোটখাট অনেক কাজ করতে শিখেছেন। এখন আমরা একটি প্রজেক্ট করার মাধ্যমে আমাদের পূর্বের শেখাকে আরো মজবুত করব। কিভাবে একটি প্রজেক্ট শুরু করতে হয় তা আমি আগের পোষ্টে আলোচনা করেছি। আশা করি আপনার কাছে বিষয়টি বোধগম্য হয়েছে।

আমরা বর্তমান প্রজেক্টটি Django 2 এবং Python 3 ভার্সনে কোড করব। সম্পুর্ন প্রজেক্টের প্রতিটি ধাপে KanBan Board অনুসরন করার চেষ্টা করব ইনশাআল্লাহ।

গত পর্বে KanBan Board এ TODO লিষ্ট তৈরী করেছিলাম

 

সর্বপ্রথম আমাদের দোকানে যে পন্যগুলো থাকবে তার লিষ্ট তৈরী করা দরকার। এজন্য  Items কে In Progress এ নিয়ে গিয়ে আমাদের কাজ শুরু করব

আমাদের চেকলিষ্টের প্রথম কাজ start project and app শুরু করি।

প্রজেক্ট শুরু

প্রজেক্টের মডিউলের ভার্সন ম্যানেজ করার জন্য virtual environment তৈরী করি।

virtualenv dokan-env --python=python3

“dokan-env” হচ্ছে virtual environment এর নাম এবং  –python=python3 দ্বারা বলে দেয়া হয়েছে যে আমরা python3 ব্যাবহার করব। আপনার পিসিতে অবশ্যই python3 ইন্সটল করা থাকতে হবে।

Activate virtualenv

source dokan-env/bin/activate

install Django

pip install django==2

প্রজেক্ট শুরু করি

django-admin startproject dokan

app তৈরী করি

python manage.py startapp inventory

settings.py এ installed_apps এ ‘inventory’ যুক্ত করি।

আমাদের দোকানে কি কি পন্য থাকবে তার ডাটা ডাটাবেজে রাখার জন্য মডেল ক্লাস তৈরী করি।
inventory/models.py

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name 


class Item(models.Model):
    name = models.CharField(max_length=150)
    category = models.ForeignKey(Category, on_delete=None)
    is_active = models.BooleanField(default=True)
    
    def __str__(self):
        return self.name

এডমিন প্যানেলে রেজিষ্টার করি
inventory/admin.py

from django.contrib import admin
from .models import Category, Item

admin.site.register(Category)
admin.site.register(Item)

মাইগ্রেট করি

python manage.py makemigrations
python manage.py migrate

superUser তৈরী করে এডমিন প্যানেলে লগিন করি এবং Category ও Item তৈরী করি।

Item List পেজ তৈরী

সবগুলো আইটেমের তালিকা দেখার জন্য একটি ভিউ তৈরী করি।
inventory/views.py

from django.shortcuts import render
from .models import Item

def item_list(request):
    all_items = Item.objects.all()
    context = {'all_items':all_items}
    return render(request, 'inventory/item_list.html', context)

settings.py এ TEMPLATES  এর ‘DIRS’: [‘templates’] যুক্ত করি।  ( বিস্তারিত )
প্রজেক্ট ডিরেক্টরীতে templates নামে একটি ডিরেক্টরী তৈরী করি এবং এর মধ্য আরেকটি inventory নামে ডিরেক্টরী তৈরী করি।

templates/inventory/item_list.html

  {% for item in all_items %}
        <p>{{item }}</p>
    {% endfor %}

inventory/urls.py

from django.urls import path
from .views import item_list


urlpatterns = [
    path('items/', item_list, name='item-list'),
]

এখন localhost:8000/inventory/items এ গিয়ে সকল আইটেমগুলো দেখতে পাবেন।

Style যুক্ত করি

[ style যোগ করার বিস্তারিত টিউটোরিয়াল দেখুন এখানে ]

Bootstrap SB Admin 2  থিম ব্যাবহার করে আমরা আমাদের প্রজেক্ট ডিজাইন করব।

রুট ডিরেক্টরীতে ( যেখানে manage.py রয়েছে) static নামে একটি ডিরেক্টরী তৈরী করি। settings.py ফাইলে বলে দিই যে, আমাদের সকল static ফাইল ( html, css, js ) এই ডিরেক্টরীতে থাকবে।
settings.py

STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]

templates/base.html

<!DOCTYPE html>
<html lang="en">

<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>My dokan</title>
    {% load staticfiles %}
    <!-- Bootstrap Core CSS -->
    <link href="{% static 'vendor/bootstrap/css/bootstrap.min.css' %}" rel="stylesheet">

    <!-- MetisMenu CSS -->
    <link href="{% static 'vendor/metisMenu/metisMenu.min.css' %}" rel="stylesheet">

    <!-- Custom CSS -->
    <link href="{% static 'dist/css/sb-admin-2.css' %}" rel="stylesheet">

    <!-- Morris Charts CSS -->
    <link href="{% static 'vendor/morrisjs/morris.css' %}" rel="stylesheet">

    <!-- Custom Fonts -->
    <link href="{% static 'vendor/font-awesome/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css">

</head>

<body>

    <div id="wrapper">

        <!-- Navigation -->
        <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="http://www.banglai-django.com/">বাংলায় জ্যাঙ্গো</a>
            </div>
            <!-- /.navbar-header -->

            <ul class="nav navbar-top-links navbar-right">
                
                <!-- /.dropdown -->
                <li class="dropdown">
                    <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                        <i class="fa fa-user fa-fw"></i> <i class="fa fa-caret-down"></i>
                    </a>
                    <ul class="dropdown-menu dropdown-user">
                        <li><a href="#"><i class="fa fa-user fa-fw"></i> User Profile</a>
                        </li>
                        <li><a href="#"><i class="fa fa-gear fa-fw"></i> Settings</a>
                        </li>
                        <li class="divider"></li>
                        <li><a href="login.html"><i class="fa fa-sign-out fa-fw"></i> Logout</a>
                        </li>
                    </ul>
                    <!-- /.dropdown-user -->
                </li>
                <!-- /.dropdown -->
            </ul>
            <!-- /.navbar-top-links -->

            <div class="navbar-default sidebar" role="navigation">
                <div class="sidebar-nav navbar-collapse">
                    <ul class="nav" id="side-menu">
                        
                        <li>
                            <a href="{% url 'item-list' %}"><i class="fa fa-dashboard fa-fw"></i> Item List</a>
                        </li>
                        
                        <li>
                            <a href="#"><i class="fa fa-table fa-fw"></i> Tables</a>
                        </li>
                        <li>
                            <a href="#"><i class="fa fa-edit fa-fw"></i> Forms</a>
                        </li>
                        
                    </ul>
                </div>
                <!-- /.sidebar-collapse -->
            </div>
            <!-- /.navbar-static-side -->
        </nav>

        <div id="page-wrapper">
            <!-- Title Block -->
            <div class="row">
                <div class="col-lg-12">
                    <h1 class="page-header">{% block pagetitle %}{% endblock %}</h1>
                </div>
                <!-- /.col-lg-12 -->
            </div>
            <!-- Container Block -->
            <div class="row">
            
                {% block container %}
                {% endblock %}
            </div>
            <!-- /.row -->

        </div>
        <!-- /#page-wrapper -->
    </div>
    <!-- /#wrapper -->

    <!-- jQuery -->
    <script src="{% static 'vendor/jquery/jquery.min.js' %}"></script>

    <!-- Bootstrap Core JavaScript -->
    <script src="{% static 'vendor/bootstrap/js/bootstrap.min.js' %}"></script>

    <!-- Metis Menu Plugin JavaScript -->
    <script src="{% static 'vendor/metisMenu/metisMenu.min.js' %}"></script>

    <!-- Morris Charts JavaScript -->
    <script src="{% static 'vendor/raphael/raphael.min.js' %}"></script>
    <script src="{% static 'vendor/morrisjs/morris.min.js' %}"></script>
    <script src="{% static 'data/morris-data.js' %}"></script>

    <!-- Custom Theme JavaScript -->
    <script src="{% static 'dist/js/sb-admin-2.js' %}"></script>

</body>

</html>

এখন item_list.html কে পরিবর্তন করে সুন্দর কাঠামো দান করি
templates/inventory/item_list.html

{% extends 'base.html' %}

{% block pagetitle %} All Items {% endblock %}

{% block container %}

<div class="col-md-12">
    <div class="panel panel-default">
        <div class="panel-body">
            <div class="table-responsive">
                <table class="table table-striped table-bordered table-hover">
                    <thead>
                        <tr>
                            <th>#</th>
                            <th>Name</th>
                            <th>Category</th>
                            <th>Is Active</th>
                        </tr>
                    </thead>
                    <tbody>
                        {% for item in all_items %}
                            <tr>
                                <td>{{ forloop.counter }}</td>
                                <td>{{ item.name }}</td>
                                <td>{{ item.category }}</td>
                                <td>{{ item.is_active }}</td>
                            </tr>
                        {% endfor %}
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>
    
{% endblock %}

localhost:8000/inventory/items/ এ গেলে নিচের চেহারা দেখতে পাবেন

আমরা আমাদের ১ম টার্গেট পূরন করতে পেরেছি। trello.com এ গিয়ে বোর্ড আপডেট করুন

GitHub এ কোড পুশ করা

[ git এবং GitHub সম্পর্কে জানতে জাকির হোসেন ভায়ের লেখাটি দেখুন ]

আমাদের এই প্রজেক্টটি গিটহাবে পুশ করব। github.com এ গিয়ে নতুন রিপজিটরী খুলুন

এখন কি করতে হবে, গিটহাব আমাদেরকে তা লিখেই দিয়েছে খুব সহজে

git init 
git add . 
git commit -m "Item list completed"
git remote add origin https://github.com/harunurkst/dokan.git
git push origin master

git remote add origin https://github.com/harunurkst/dokan.git এই লাইনটিতে আপনার রিপজিটরী url বাসান

কেমন লাগলো প্রজেক্টটি করতে? আশা করি ভাল লেগেছে। কমেন্টে আপনার অনুভুতি জানান। আগামি পর্বে প্রজেক্টের ২য় পর্ব দেখাবো ইনশাআল্লাহ।

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 নিয়ে ১ম পর্বে আমরা আলচনা করেছি।