Django জ্যাঙ্গো
  • Python Basic
  • Python OOP
  • OOP Project
  • Jupyter Notebook
  • Python MOngodb
  • Numpy
  • Pandas
  • Framework কি?
  • জ্যাঙ্গো ওয়েব ফ্রেমওয়ার্ক
  • ভার্চুয়াল এনভায়র্নমেন্ট
    • ভার্চুয়াল এনভায়র্নমেন্ট তৈরী করি :
    • জ্যাংগো ইন্সটল
  • প্রথম প্রজেক্ট শুরু
    • সেটিংস পরিচিতি
    • Template
      • load css,js
        • template load
    • create project
  • অ্যাপস কি?
    • প্রথম অ্যাপস তৈরি
  • apps কে প্রজেক্টের সাথে যুক্ত করি
  • এইচটিএমএল টেমপ্লেট নিয়ে কাজ করি
    • স্ট্যাটিক ফাইল ও টেম্পলেট
    • Hompage পরিবর্তন করি
    • বেস টেমপ্লেট বানাই
    • html টেম্পলেট কে কনভার্ট করি
    • Template Tags
    • Context Processor
  • Urls
  • urls.py এ প্যারামিটার কিভাবে কাজ করে
  • message
  • Forms
    • সাধারণ একটি ফর্ম বানাই
    • ফর্ম লে আউট পরিবর্তন
    • বুটস্ট্রাপ ফর্ম
    • মডেল ফর্ম
      • Form Customization
  • models
    • মডেল বানাই
    • মাইগ্রেশন
    • মডেল ভ্যালিডেশন করা
    • মডেল কাস্টমাইজ
  • Crud
    • image Crud Admin Panel
    • Custom Crud
      • form design bootstrap
      • search Functionality
      • menu
    • File Upload App
    • Image Crud
    • Class view Crud
  • Django Authentication
    • Login/Logout(Default)
    • Registration Page(Default )
    • Profile UpdateView (Default)
    • Change Password (Default)
    • Custom Login And Registration
    • Protecting View
  • Custom Field User Model
  • Formset
    • Page 1
    • formset Crud
  • Send Email
    • Send Email From Gmail
      • Send Email With Attachment
    • Email Verification
  • Uploading Images to Cloudinary
  • Database Connection
    • MySQL
    • postgresql
  • Django Orm
    • Basic Database Operation
      • -all()
      • - get():
      • - first() and last():
      • - filter():
      • - exclude():
      • Chaining Queries
      • Creating, Updating, and Deleting Records
      • Aggregation
      • Annotation
    • Model Relationships and Related Names
      • One-to-One Relationships
      • Many-to-One Relationships
      • Many-to-Many Relationships
      • Reverse Relationships
      • Understanding related_name
    • Advanced Querying with Django ORM
      • Chaining Queries
      • F() Expressions
      • Q() Objects
        • Dynamic Search
      • Raw SQL Queries
    • Performance Optimization with Django ORM
      • Select Related
    • Django সিগন্যাল :
  • requirement.txt
  • channels
    • Create Project
    • কনফিগার
  • Send SMS in Django
    • Configuration
  • Mysql Setup
  • অ্যাডমিন প্যানেলে
    • Site Heading And Title Change
    • মডেলকে অ্যাডমিন প্যানেলে যোগ করি
    • মডেলকে একবার সেভ করা যাবে
    • এডমিন প্যানেলে পিডিএফ এক্সপোর্ট বাটন যোগ করি
    • মডেল ফর্ম কাস্টোমাইজ করি
    • মডেলের html টেম্পলেট পরিবর্তন করি
    • ফিল্ড এর ডিজাইন বুটস্ট্রাপ ফরম্যাটে হবে
    • টেবিল বেসড ফর্মসেট এপ্লিকেশন
    • নির্দিষ্ট ইউজারকে মডেলে এক্সেস পারমিশন দেয়া
    • অ্যাডমিন প্যানেলে জাভাস্ক্রিপ্ট ও css ফাইল যোগ করা
    • fetch data
    • bill of materials
  • Django Rest Framework
    • ভার্চুয়াল এনভায়র্নমেন্ট
    • প্রজেক্ট তৈরী করি
    • মডেলকে প্রস্তুত করি
    • serializer
    • Validation
    • Api তৈরী করি (api_view)
    • Api তৈরী করি (viewsets)
    • JsonResponse তৈরি করি
    • authentication
    • Reactjs
  • প্যাকেজ নিয়ে কাজ করি
    • Tinymce Editor
    • highlight.js
    • Social Login
      • Facebook
      • Github
      • google
    • Select2
      • admin panel
    • CELERY
    • Autocomplete Show Multiple Fields
      • Autocomplete Search
  • Mongodb
    • basic models,forms,views
    • Category Crud
      • Category List
      • Create Category
      • Edit Category
      • Delete Category
      • Link Button list.html
    • Tags Crud
      • Tags List
      • Create Tags
      • Edit Tags
      • Delete Tags
      • Link Button list.html
    • Post
      • Post List
      • Create Post
        • Tinymc
      • Post Details
      • Edit Post
      • Delete Post
      • Link Button list.html
      • Search
    • Comment
      • Post Details
    • Formset Crud
      • Models.py
      • forms.py
      • views
      • urls.py
      • Author
        • author_list
        • create_author
        • Edit Author
        • Delete Author
        • Link Button
      • BookFormset
    • Rest Api
    • Image Upload
  • Redis
  • chart
  • Deployment
    • Pythonanywhere
    • Cpanel Host
  • Reactjs
Powered by GitBook
On this page

জ্যাঙ্গো ওয়েব ফ্রেমওয়ার্ক

ওয়েব ফ্রেমওয়ার্ক পরিচিতি

জ্যাঙ্গোর ডেভেলপাররা আগে বড় বড় নিউজমিডিয়া বা পত্রিকার জন্য ওয়েবসাইট তৈরি করে দিতো। একদিন কাজ করতে গিয়ে তারা হঠাৎ করে খেয়াল করলো যে, "আরে! দৈনিক অমুক পত্রিকার ওয়েবসাইট আর দৈনিক তমুক পত্রিকার ওয়েবসাইটের কোডের প্রায় ৯০%-ই একইরকম!" অর্থাৎ, তারা নতুন নতুন ওয়েবসাইট তৈরি করতে গিয়ে বোকার মত একই কোড বার বার লিখছিল।

তখন তাদের মাথায় একটা সাংঘাতিক আইডিয়া এসে গেল! "আচ্ছা, আমরা যদি এমন একটা "জিনিস" বানাই যাতে বারবার আমাদের গাধার মত একই কোড লিখতে না হয়, একবার লিখে ফেলবো এবং দরকারমত বিভিন্ন প্রজেক্টে ওই জিনিসটা ব্যবহার করবো!" ইউরেকা! এরকম চিন্তাভাবনা থেকেই জন্ম নেয় জ্যাঙ্গো ওয়েব ফ্রেমওয়ার্কের।

ফ্রেমওয়ার্ক নিলে আমার লাভ কি?

আপনি জিজ্ঞেস করতে পারেন, ফ্রেমওয়ার্ক কেন ব্যবহার করবো? কয়েকটি সোজা উদাহরণ দিয়ে বুঝিয়ে দিচ্ছি! যেমন ধরুন আপনি একটি ব্লগ বানাবেন, নিজে কোড করে ব্লগ বানাবেন ভাব মারার পাশাপাশি আপনার বদের হাড্ডি ছোট ভাইটা ওয়ার্ডপ্রেস বা অন্য কোন সিএমএসের নিরাপত্তার দুর্বলতা জেনে ব্লগের সামনে বিশাল "হ্যাক করছি" নোটিশ যাতে না দিতে পারে।

ধরি আপনি প্লেইন পাইথন বা অন্য কোন ভাষার কোন ওয়েব ফ্রেমওয়ার্ক ব্যবহার না করে লিখবেন। তাহলে আপনার কাজের লিস্টি মোটামুটি...

  1. ডাটাবেজের সঙ্গে সংযোগ দেয়া

  2. ডাটাবেজে SQL লিখে টেবিল তৈরি করা

  3. টেবিলে ডাটা INSERT ও UPDATE করানোর জন্য অ্যাডমিন ইন্টারফেস (যেখানে ব্লগ পোস্ট লিখবেন, আপডেট করবেন) তৈরি করা

  4. সাইট সুরক্ষিত রাখতে সিকিউরিটি নিশ্চিত করা; CSRF, XSS... প্রটেকশন দেয়া।

  5. ডাটাবেজের ডাটা SELECT করে সাইটের ভিজিটরদের জন্য সুন্দর ফ্রন্টএন্ড (সাইটের যে অংশ ভিজিটররা দেখবে) তৈরি করা

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

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

Django Framework কেন শিখবেন?

Django Web Framework কেন আপনি শিখবেন? এটি একটি গুরুত্বপূর্ণ প্রশ্ন। তার আগে জেনে নেওয়া যাক কেন Disqus, Instagram, Youtube, The Washington Post এবং Dropbox এর মতো শীর্ষ কোম্পানি গুলো এই framework টি ব্যবহার করছে? এবং কেন আপনার পরবর্তী প্রজেক্টের জন্য এই framework টি বেছে নেওয়া উচিত তা নিয়ে আলোচনা করা যাক।

১. এটি Python দিয়ে তৈরি করা, যার ফলে এটি সহজে শেখা যায় :

আমরা সবাই জানি যে পাইথন কতটা সহজ একটা ল্যাংগুয়েজ। Python Programming Language যেমন পড়া সহজ এবং এটি শেখাও অনেক সহজ। অনেক শিক্ষানবিস এই Programming Language টিকে কোডিংয়ের জন্য তাদের প্রথম Programming Language হিসাবে বেছে নেয় কারণ এর সরলতা এবং easy learning curve এর কারণে। কলেজ ও বিশ্ববিদ্যালয়গুলো শিক্ষার্থীদের কোডিং শেখানোর জন্য এই Programming Language ব্যবহার করছে। শুধু নতুনরা নয়, প্রযুক্তি বিশেষজ্ঞরাও ডেটা সায়েন্স, মেশিন লার্নিং এবং অন্যান্য বিভিন্ন ক্ষেত্রে এই Programming Language ব্যবহার করছেন। পাইথন একটি বেশ স্থিতিশীল ভাষা এবং জ্যাঙ্গো পাইথনের অনেক মূল সুবিধা উত্তরাধিকার সূত্রে পায়। আমরা যদি জ্যাঙ্গোর মূল জিনিসগুলি দেখি তবে সমস্ত ব্যতিক্রম ফাইল এবং কোডগুলি পাইথনে লেখা আছে। তাই জ্যাঙ্গো শেখাও সহজ যদি আপনি জানেন কিভাবে পাইথনে কোড করতে হয়।

২. Cross-Platform

Django একটি portable framework এবং আপনি এটির কোড PC, Mac, Windows, Linux ইত্যাদি সহ যেকোনো প্ল্যাটফর্মে চালাতে পারেন। এই ফ্রেমওয়ার্কের ক্রস-প্ল্যাটফর্ম প্রকৃতি ডেভেলপারদের সমস্ত development এবং production environment সমর্থন করতে দেয়। জ্যাঙ্গোতে developer এবং ডাটাবেসের মধ্যে ORM (object-relational mapper) নামে একটি layer রয়েছে। এই layer টির সাহায্যে, আপনি কোডে কয়েকটি পরিবর্তনের মাধ্যমে পুরো project টিকে অন্যান্য major যেকোনো ডেটাবেসে স্থানান্তর করতে পারেন।

৩. Open Source এবং প্রচুর Community Support

Django হলো একটি ফ্রি এবং ওপেনসোর্স framework যা গিটহাবে সবার জন্য উম্মুক্ত। যেখানে প্রায় দুই হাজারে ও বেশি contributors এবং আরও অনেকে এর উন্নয়নের জন্য প্রতিদিন যোগ দিচ্ছেন। এটি developer দের বিশাল community দ্বারা সমর্থিত এবং সর্বদা ডেভেলপাররা এটি ব্যবহার করে আপডেট করে। কোডিং সম্পর্কিত সমস্যাগুলি সমাধান করার জন্য এর কমিউনিটি দ্বারা প্রচুর নতুন লাইব্রেরি যুক্ত করা হয়েছে যা ডেভেলপাররা প্রায়শই একটি প্রজেক্ট তৈরি করার সময় সম্মুখীন হয়। আপনি যদি এমন কিছু অনুসন্ধান করেন যে কীভাবে একটি নির্দিষ্ট জিনিস জ্যাঙ্গোতে কাজ করতে পারে, সম্ভাবনা বেশি যে আপনার সমস্যাটি ইতিমধ্যেই কমিউনিটির অন্য কোনও ডেভেলপার দ্বারা সমাধান করা হয়েছে এবং আপনার সমস্যা দেখা দেওয়ার সাথে সাথে আপনি সহজেই সমাধানটি পেয়ে যাবেন। এই ফ্রেমওয়ার্কের জন্য প্রচুর mailing lists, blogs, documentation, Slack channels, meetups, workshops, এবং অন্যান্য অনলাইন resources বিদ্যমান রয়েছে।

৪. Batteries Included

একটি পূর্ণাঙ্গ ওয়েব এপ্লিকেশন ডেভেলপ করার জন্য জ্যাঙ্গোতে সব ধরণের ব্যাটারি ইতিমধ্যে রয়েছে। যার মানে আপনি একটি পূর্ণাঙ্গ অ্যাপ্লিকেশন ডেভেলপের জন্য প্রয়োজনীয় সবকিছুই খুঁজে পেতে পারেন। এই ব্যাটারির মধ্যে রয়েছে ORM, Authentication, HTML templating, session management support, URL routing, Middlewares, HTTP libraries, Multi-site support, i18n, template engine, forms, view layers, model layers, python compatibility ইত্যাদি। এই ফ্রেমওয়ার্ক টি common use case গুলোর ক্ষেত্রে অসংখ্য লাইব্রেরি এবং টুলস এর সুবিধা দেয় । এই ধরনের বিশাল সুবিধা ডেভেলপারদের সবকিছুর জন্য নতুন করে চিন্তা এবং উদ্ভাবনের পরিবর্তে সবচেয়ে গুরুত্বপূর্ণ জিনিসটিতে ফোকাস করতে সুযোগ দেয়।

৫. Security

জ্যাঙ্গোর সেরা সুবিধা গুলির মধ্যে একটি হল যে আপনি একটি দ্রুত গতিতে অ্যাপ্লিকেশনটি তৈরি করতে পারেন এবং অ্যাপ্লিকেশনটির নিরাপত্তার সাথে আপস না করে এটি ডেলিভার করতে পারেন। এই ফ্রেমওয়ার্ক এ ডিফল্টরূপে Security feature বিদ্যমান। এটিতে কিছু সাধারণ নিরাপত্তা সমস্যা সমাধান যেমন cross-site scripting, request forgery, clickjacking, এবং SQL injection এর জন্য বিল্টইন সুরক্ষা রয়েছে। জ্যাঙ্গো প্রায়শই নতুন নিরাপত্তা security patches release করে এবং এটি অবিলম্বে security vulnerabilities গুলোর প্রতি সাড়া দেয় এবং অন্যান্য framework গুলোকে সতর্ক করে।

৬. Built-in Admin UI

বেশিরভাগ ফ্রেমওয়ার্কে আপনাকে নিজেরাই admin panel তৈরি করতে হবে এবং এতে আপনার অনেক সময় নষ্ট হয়। জ্যাঙ্গো একটি fully-featured web interface অফার করে যা আপনার তৈরি করা প্রতিটি অ্যাপের জন্য স্বয়ংক্রিয়ভাবে তৈরি হয়। admin panel টি well structured থাকে এবং এটি ডেভেলপারদের অ্যাপের জন্য খুব সহজেই যেকোনো কিছুর জন্য Database এর create/Read/update/delete এর মতো কাজগুলো করার সুযোগ দেয়। আপনার প্রয়োজন অনুযায়ী, আপনি অ্যাডমিন প্যানেল এর ইন্টারফেস কাস্টমাইজ বা পরিবর্তন করতে পারেন এবং third-party application এবং wrappers ব্যবহার করে dashboard এ যোগ করতে পারেন।

৭. ORM (Object-relational mapper)

জ্যাঙ্গো একটি সম্পূর্ণ functional ORM অফার করে, যা অনেকগুলি ডেটাবেসের সাথে compatible । মূলত ORM হল একটি লাইব্রেরি যা ডেভেলপারদের ডাটাবেসের সাথে ইন্টারঅ্যাক্ট করতে সাহায্য করে এবং তাদের ডেটাবেস থেকে (যেমন MySQL এবং PostgreSQL) objects এ স্বয়ংক্রিয়ভাবে ডেটা স্থানান্তর করতে দেয়। আপনি একসাথে একাধিক ডাটাবেস নিয়ে কাজ করতে পারেন। কিছু প্রযুক্তি যেমন Eloquent, greenDAO, Yii AR, ইত্যাদি basic querie গুলি খুব ভালভাবে পরিচালনা করে কিন্তু কিছু সময়ে, যদি ORM কিছু use case এর ক্ষেত্রে সমাধান করতে ব্যর্থ হয় তবে আপনাকে raw queries গুলি লিখতে হবে। এটি জ্যাঙ্গোর ক্ষেত্রে দরকারনেই। এটি well-built এবং এটি ডাটাবেস queries গুলি খুব ভালভাবে পরিচালনা করে।

Django ORM এর ডেটা বের করার ক্ষমতা অ্যাপ্লিকেশন ডেভেলপমেন্ট প্রক্রিয়াকে ত্বরান্বিত করে। ডেটা ম্যানিপুলেট করার জন্য আপনাকে ডেটাবেস যোগাযোগের জন্য ব্যবহৃত language জানার দরকার নেই। এছাড়াও, আপনি অতিরিক্ত কোডের কম লাইন সহ একাধিক রিলেশনাল ডাটাবেসের মধ্যে স্যুইচ করতে পারেন। সুতরাং একটি প্রজেক্টের জন্য, আপনি যদি local development এর জন্য SQLite ব্যবহার করেন, আপনি production এ MySQL-এ স্যুইচ করতে পারেন।

৮. DRY (Don’t Repeat Yourself)

প্রোগ্রামিং এ code-reusability বা DRY নীতি অনুসরণ করা সত্যিই গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি নিয়মিত কোড আপডেট করছেন। আপনি যখন DRY নীতি অনুসরণ করেন তখন আপনি বিদ্যমান কোডটি ব্যবহার করেন না, আপনি কোডের অপ্রয়োজনীয় লাইন, বাগ বা অ্যাপ্লিকেশনে error গুলিও এড়িয়ে যান। DRY নীতির সাহায্যে, আপনি খুব কম কোড থেকে বেশি আউটপুট পেতে পারেন এবং এটি আপনার কোডকে কাজ করতে বা যেকোন কারণে কোড পরিবর্তন করার ক্ষেত্রে অনেক সময় বাঁচাবে।

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

উপরের কোডে, যদি আপনার ক্ষেত্রটি `max_length` বা অন্য কিছু পরিবর্তন করতে হয়, আপনি এটি এখানে করতে পারেন এবং পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে সমস্ত routes, validation, এবং database এ প্রতিফলিত হবে।

৯. Scalable এবং Reliable

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

১০. Good Documentation

কুইক রেফারেন্সের জন্য, যে কোনও framework বা language এর জন্য ভাল ডকুমেন্টেশন অনেক গুরুত্বপূর্ণ, বিশেষ করে যখন আমরা কোনও প্রজেক্টের ডেভেলপমেন্ট পেজ এ কোথাও আটকে যাই। জ্যাঙ্গো উদাহরণ কোড সহ সুসংগঠিত ডকুমেন্টেশন সরবরাহ করে যা বিভিন্ন ধরণের real-world অ্যাপ্লিকেশন তৈরিতে খুব সহায়ক। ডকুমেন্টেশনটি দ্রুত রেফারেন্সের জন্য ভাল যদি আপনি আপনার অ্যাপ্লিকেশনে কিছু বৈশিষ্ট্য তৈরি করেন বা আপনি আপনার কোডে কিছু সমস্যায় আটকে থাকেন।

PreviousFramework কি?Nextভার্চুয়াল এনভায়র্নমেন্ট

Last updated 1 year ago