Web2Py ব্যবহার করে Blog এবং Content Management System (CMS) তৈরি করা একটি সহজ এবং শক্তিশালী প্রক্রিয়া। Web2Py একটি ফুল-স্ট্যাক ফ্রেমওয়ার্ক, যা Python, HTML, CSS, JavaScript এবং SQL কে একসাথে ব্যবহার করে ডাইনামিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে।
এই গাইডে, আমরা দেখব কিভাবে Web2Py তে একটি সিম্পল Blog এবং CMS তৈরি করা যেতে পারে।
Web2Py তে Blog তৈরি করা
একটি Blog তৈরি করার জন্য আমাদের একটি পোস্ট তৈরি, সংরক্ষণ এবং প্রদর্শন করার জন্য সিস্টেম তৈরি করতে হবে। Blog পোস্টগুলো সাধারণত একটি Title, Content, এবং Date এর মতো তথ্য ধারণ করে।
ধাপ ১: ডেটাবেস টেবিল তৈরি করা
প্রথমে, আপনাকে models ফোল্ডারে একটি db.py ফাইল তৈরি করতে হবে এবং এখানে Post টেবিল সংজ্ঞায়িত করতে হবে।
models/db.py:
db.define_table('post',
Field('title', 'string'),
Field('content', 'text'),
Field('created_on', 'datetime', default=request.now),
Field('updated_on', 'datetime', default=request.now, update=request.now))
এখানে আমরা একটি post টেবিল তৈরি করেছি যার মধ্যে:
- title: ব্লগ পোস্টের শিরোনাম
- content: ব্লগ পোস্টের বিস্তারিত কনটেন্ট
- created_on: পোস্টের তৈরি হওয়ার সময়
- updated_on: পোস্টের শেষ আপডেটের সময়
ধাপ ২: কন্ট্রোলার তৈরি করা
এখন, একটি কন্ট্রোলার তৈরি করতে হবে যা ব্লগ পোস্ট তৈরি, দেখানো এবং সম্পাদনা করার জন্য কাজ করবে।
controllers/default.py:
def index():
posts = db().select(db.post.ALL, orderby=~db.post.created_on) # সব পোস্ট আনা, সেগুলো সময় অনুসারে সাজানো
return dict(posts=posts)
def create():
form = SQLFORM(db.post) # নতুন পোস্ট তৈরি করার ফর্ম
if form.process().accepted:
response.flash = 'Post created successfully!'
redirect(URL('index')) # ফর্ম সাবমিট হলে হোম পেজে রিডিরেক্ট করা হবে
return dict(form=form)
def edit():
post_id = request.args(0, cast=int) # পোস্ট আইডি আনা
post = db.post(post_id) # পোস্ট ডেটা ফেচ করা
if post:
form = SQLFORM(db.post, post) # পোস্ট ফর্ম লোড করা
if form.process().accepted:
response.flash = 'Post updated successfully!'
redirect(URL('index')) # ফর্ম সাবমিট হলে হোম পেজে রিডিরেক্ট করা হবে
else:
response.flash = "Post not found!"
redirect(URL('index'))
return dict(form=form, post=post)
এখানে:
- index(): ব্লগ পোস্টের তালিকা প্রদর্শন করবে।
- create(): নতুন ব্লগ পোস্ট তৈরি করার জন্য ফর্ম প্রদর্শন করবে।
- edit(): বিদ্যমান ব্লগ পোস্ট সম্পাদনা করার জন্য ফর্ম প্রদর্শন করবে।
ধাপ ৩: ভিউ তৈরি করা
এখন, views ফোল্ডারে ভিউ ফাইল তৈরি করতে হবে যা ইউজারের সামনে ব্লগ পোস্টগুলো দেখাবে।
views/default/index.html:
<h1>Blog Posts</h1>
<table>
<tr>
<th>Title</th>
<th>Created On</th>
<th>Actions</th>
</tr>
{{for post in posts:}}
<tr>
<td>{{=post.title}}</td>
<td>{{=post.created_on}}</td>
<td><a href="{{=URL('edit', args=[post.id])}}">Edit</a></td>
</tr>
{{pass}}
</table>
<a href="{{=URL('create')}}">Create a new post</a>
views/default/create.html:
<h1>Create a New Blog Post</h1>
{{=form}}
views/default/edit.html:
<h1>Edit Blog Post</h1>
{{=form}}
ধাপ ৪: ব্লগ অ্যাপ্লিকেশন চালানো
এখন আপনার ব্লগ সিস্টেম তৈরি হয়ে গেছে এবং Web2Py সার্ভারে এটি পরীক্ষা করা যাবে। এটি /your_app_name/default/index URL এ পোস্টের তালিকা দেখাবে এবং আপনি create ও edit অপশন পাবেন।
Web2Py তে CMS (Content Management System) তৈরি করা
CMS (Content Management System) সাধারণত একটি ব্লগ সিস্টেমের মতো, তবে এটি আরো সাধারণ এবং বিস্তৃত হতে পারে। CMS এর মাধ্যমে ব্যবহারকারীরা বিভিন্ন ধরনের কনটেন্ট যেমন পৃষ্ঠা, ব্লগ পোস্ট, ফর্ম ইত্যাদি তৈরি এবং পরিচালনা করতে পারেন।
ধাপ ১: ডেটাবেস টেবিল তৈরি করা
CMS সিস্টেমে সাধারণত বিভিন্ন কনটেন্ট টাইপ (যেমন পৃষ্ঠা, ব্লগ পোস্ট) সংরক্ষিত থাকে। একটি সাধারণ টেবিল তৈরি করুন যা সমস্ত কনটেন্ট ট্যাগ এবং কনটেন্ট টাইপ ধারণ করবে।
models/db.py:
db.define_table('content',
Field('title', 'string'),
Field('body', 'text'),
Field('type', 'string'), # page, blog post, etc.
Field('created_on', 'datetime', default=request.now),
Field('updated_on', 'datetime', default=request.now, update=request.now))
ধাপ ২: কন্ট্রোলার তৈরি করা
এখন, CMS এর জন্য কন্ট্রোলার তৈরি করতে হবে। এটি pages এবং posts সহ বিভিন্ন কনটেন্ট পরিচালনা করবে।
controllers/default.py:
def index():
contents = db().select(db.content.ALL, orderby=~db.content.created_on)
return dict(contents=contents)
def create():
form = SQLFORM(db.content)
if form.process().accepted:
response.flash = 'Content created successfully!'
redirect(URL('index'))
return dict(form=form)
def edit():
content_id = request.args(0, cast=int)
content = db.content(content_id)
if content:
form = SQLFORM(db.content, content)
if form.process().accepted:
response.flash = 'Content updated successfully!'
redirect(URL('index'))
else:
response.flash = "Content not found!"
redirect(URL('index'))
return dict(form=form, content=content)
ধাপ ৩: ভিউ তৈরি করা
এখন CMS এর জন্য কাস্টম ভিউ তৈরি করতে হবে যা কনটেন্ট দেখাবে, সম্পাদনা করবে এবং নতুন কনটেন্ট তৈরি করবে।
views/default/index.html:
<h1>All Content</h1>
<table>
<tr>
<th>Title</th>
<th>Type</th>
<th>Actions</th>
</tr>
{{for content in contents:}}
<tr>
<td>{{=content.title}}</td>
<td>{{=content.type}}</td>
<td><a href="{{=URL('edit', args=[content.id])}}">Edit</a></td>
</tr>
{{pass}}
</table>
<a href="{{=URL('create')}}">Create New Content</a>
views/default/create.html:
<h1>Create New Content</h1>
{{=form}}
views/default/edit.html:
<h1>Edit Content</h1>
{{=form}}
ধাপ ৪: CMS অ্যাপ্লিকেশন চালানো
এখন আপনার CMS সিস্টেম প্রস্তুত এবং আপনি /your_app_name/default/index URL তে এটি অ্যাক্সেস করতে পারবেন। এখানে আপনি সমস্ত কনটেন্ট দেখতে পাবেন, এবং create বা edit অপশন ব্যবহার করে নতুন কনটেন্ট তৈরি বা সম্পাদনা করতে পারবেন।
সারাংশ
Web2Py ব্যবহার করে Blog এবং Content Management System (CMS) তৈরি করা সহজ। প্রথমে models ফোল্ডারে ডেটাবেস টেবিল তৈরি করুন, পরে controllers ফোল্ডারে কন্ট্রোলার ফাংশন তৈরি করুন এবং শেষমেশ views ফোল্ডারে ব্যবহারকারী ইন্টারফেস তৈরি করুন। Web2Py এর সহজ ফ্রেমওয়ার্ক এবং SQLFORM ব্যবহার করে আপনি দ্রুত ব্লগ পোস্ট বা কনটেন্ট তৈরি ও সম্পাদনা করতে পারবেন।
Read more