Web2Py তে User Preferences সেভ করা একটি গুরুত্বপূর্ণ ফিচার, যেখানে ব্যবহারকারীরা তাদের পছন্দের সেটিংস বা তথ্য (যেমন থিম, ভাষা, বিজ্ঞপ্তি সেটিংস) সংরক্ষণ করতে পারে। এই তথ্য সাধারণত ব্যবহারকারীর ডেটাবেসে সেভ করা হয়, যাতে প্রতিবার লগ ইন করার পর ইউজার তাদের পছন্দ অনুযায়ী অ্যাপ্লিকেশনটি কাস্টমাইজ করতে পারে। Web2Py তে User Preferences সেভ করার জন্য আপনাকে কিছু সাধারণ ধাপ অনুসরণ করতে হবে।
Web2Py তে User Preferences সেভ করার প্রক্রিয়া
১. ডেটাবেসে User Preferences টেবিল তৈরি করা
প্রথমে, আপনাকে একটি টেবিল তৈরি করতে হবে যেখানে ইউজারের পছন্দ (preferences) সংরক্ষণ করা হবে। উদাহরণস্বরূপ, আপনি ইউজারের থিম এবং ভাষা পছন্দ সংরক্ষণ করতে পারেন।
Model (models/db.py):
db.define_table('user_preferences',
Field('user_id', 'reference auth_user'),
Field('theme', 'string', default='light'), # থিম পছন্দ (light বা dark)
Field('language', 'string', default='en'), # ভাষার পছন্দ (en বা bn)
Field('notifications', 'boolean', default=True) # বিজ্ঞপ্তি পছন্দ
)
এখানে, user_preferences টেবিলটি ইউজারের থিম, ভাষা এবং বিজ্ঞপ্তি সেটিংস সেভ করবে। user_id ফিল্ডটি auth_user টেবিলের সাথে সংযুক্ত, যাতে প্রতিটি পছন্দ নির্দিষ্ট ইউজারের জন্য সংরক্ষণ করা হয়।
২. ইউজারের পছন্দ সেভ করা
আপনার অ্যাপ্লিকেশনে একটি ফর্ম তৈরি করতে হবে, যেখানে ব্যবহারকারী তাদের পছন্দ পরিবর্তন করতে পারবেন (যেমন থিম, ভাষা, বিজ্ঞপ্তি ইত্যাদি)। ফর্মটি গ্রহণ করার পর, আপনি সেই ডেটা user_preferences টেবিলের মধ্যে সেভ করতে পারবেন।
Controller (controllers/default.py):
def preferences():
# ইউজারের আগের পছন্দগুলো ডেটাবেস থেকে আনুন
user_id = auth.user.id # লগ ইন করা ইউজারের ID
preferences = db(db.user_preferences.user_id == user_id).select().first()
# যদি ইউজারের পছন্দ না থাকে, নতুন রেকর্ড তৈরি করুন
if not preferences:
preferences = db.user_preferences.insert(user_id=user_id)
form = SQLFORM(db.user_preferences, preferences)
if form.process().accepted:
response.flash = "Preferences updated successfully!"
elif form.errors:
response.flash = "Error updating preferences."
return dict(form=form)
এখানে, preferences() ফাংশনটি প্রথমে ডেটাবেস থেকে ইউজারের পছন্দের তথ্য নেয় এবং তারপর SQLFORM এর মাধ্যমে একটি ফর্ম প্রদর্শন করে। ব্যবহারকারী ফর্মটি সাবমিট করলে, তার পছন্দগুলি ডেটাবেসে সেভ হয়ে যাবে।
৩. ভিউতে ফর্ম প্রদর্শন
ইউজার পছন্দ পরিবর্তন করার জন্য একটি ফর্ম তৈরি করতে হবে। এই ফর্মে ব্যবহারকারী থিম, ভাষা এবং বিজ্ঞপ্তি সেটিংস পরিবর্তন করতে পারবেন।
View (views/default/preferences.html):
<h1>Update Your Preferences</h1>
{{=form}}
এখানে, {{=form}} এর মাধ্যমে preferences ফর্মটি ভিউতে প্রদর্শন করা হবে, যেখানে ইউজার তার পছন্দ পরিবর্তন করতে পারবেন।
৪. ইউজার পছন্দের ডেটা প্রদর্শন
ব্যবহারকারীর পছন্দের তথ্য রিটার্ন করার জন্য, আপনি ডেটাবেস থেকে সেই তথ্য নিয়ে এসে ব্যবহারকারীকে দেখাতে পারেন।
Controller (controllers/default.py):
def show_preferences():
user_id = auth.user.id # লগ ইন করা ইউজারের ID
preferences = db(db.user_preferences.user_id == user_id).select().first()
if preferences:
return dict(preferences=preferences)
else:
return dict(preferences=None)
View (views/default/show_preferences.html):
<h1>Your Preferences</h1>
{{if preferences:}}
<p>Theme: {{=preferences.theme}}</p>
<p>Language: {{=preferences.language}}</p>
<p>Notifications: {{=preferences.notifications}}</p>
{{else:}}
<p>No preferences set yet.</p>
{{pass}}
এখানে, show_preferences() ফাংশনটি ইউজারের পছন্দগুলি রিটার্ন করে এবং ভিউতে তা প্রদর্শন করা হয়।
৫. ইউজারের পছন্দ ডেটা রিড করা (Retrieving Preferences)
ব্যবহারকারীর পছন্দের তথ্য সেভ হওয়ার পর, আপনাকে সেই পছন্দ অনুসারে অ্যাপ্লিকেশনের সেটিংস পরিবর্তন করতে হবে। উদাহরণস্বরূপ, আপনি ইউজারের থিমের পছন্দ অনুযায়ী অ্যাপ্লিকেশনটির থিম পরিবর্তন করতে পারেন।
Controller (controllers/default.py):
def apply_preferences():
user_id = auth.user.id # লগ ইন করা ইউজারের ID
preferences = db(db.user_preferences.user_id == user_id).select().first()
if preferences:
theme = preferences.theme
language = preferences.language
notifications = preferences.notifications
# থিম ও ভাষা অনুযায়ী অ্যাপ্লিকেশন কনফিগার করুন
response.title = f"App - {theme.capitalize()} Theme"
# অন্যান্য কনফিগারেশন বা UI পরিবর্তন করা যেতে পারে
return dict(preferences=preferences)
৬. স্ট্যাটিক ফাইলের মাধ্যমে থিম পরিবর্তন
আপনি ব্যবহারকারীর থিমের পছন্দ অনুযায়ী সিএসএস ফাইল লোড করতে পারেন। উদাহরণস্বরূপ, যদি ইউজার dark থিম পছন্দ করেন, তাহলে dark.css ফাইল লোড হবে।
View (views/default/layout.html):
<head>
<title>{{=response.title}}</title>
{{if preferences.theme == 'dark':}}
<link rel="stylesheet" href="{{=URL('static', 'css/dark.css')}}">
{{else:}}
<link rel="stylesheet" href="{{=URL('static', 'css/light.css')}}">
{{pass}}
</head>
এখানে, ইউজারের থিম অনুযায়ী সিএসএস ফাইল লোড করা হচ্ছে।
সারাংশ
Web2Py তে User Preferences সেভ করা সহজ এবং কার্যকরী। আপনি user_preferences নামে একটি টেবিল তৈরি করে ইউজারের পছন্দ সংরক্ষণ করতে পারেন এবং SQLFORM এর মাধ্যমে সেগুলি পরিবর্তন করতে পারেন। এই প্রক্রিয়া ব্যবহারকারীদের ব্যক্তিগত পছন্দ অনুযায়ী অ্যাপ্লিকেশন কাস্টমাইজ করতে সহায়তা করে।
- Preferences টেবিল তৈরি করুন যেখানে ইউজারের পছন্দের ডেটা থাকবে।
- ফর্ম তৈরি করে ইউজারের পছন্দ গ্রহণ করুন এবং ডেটাবেসে সেভ করুন।
- ফর্মের মাধ্যমে পছন্দ পরিবর্তন এবং ডেটাবেস থেকে ডেটা রিটার্ন করে ভিউতে প্রদর্শন করুন।
- থিম, ভাষা বা অন্যান্য সেটিংস অনুযায়ী অ্যাপ্লিকেশন কনফিগার করুন।
এভাবে Web2Py তে ইউজারের পছন্দ সেভ এবং হ্যান্ডল করা যায়, যা ব্যবহারকারীদের জন্য একটি কাস্টমাইজড এক্সপিরিয়েন্স তৈরি করতে সাহায্য করে।