১০.৪ : প্রোফাইল পেজ পার্ট ১

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

সো আজকে আমরা ইউজার এর পাসওয়ার্ড বাদ দিয়ে বাকি যে ফিল্ড গুলা আছে অর্থাৎ ইউজার নেম, ফার্স্ট নেম, লাস্ট নেম, ইমেইল চেঞ্জ করতে পারবে সেই কাজ টা করে ফেলবো।

class ChangeUserForm(UserChangeForm):
    password = None
    class Meta:
        model = User
        fields = ['username', 'first_name', 'last_name', 'email']

এখন সাভাবিক ভাবেই আমাদের একজন ইউজার এর ডাটা আমাদের ডাটাবেজ এ আছে সো সে যখনি প্রোফাইল পেজ থেকে প্রোফাইল আপডেট এর ফরম দেখতে পাবে সেটা যেনো আগে থেকেই তার ডাটা দিয়ে ফিল আপ করা থাকে সেটা ensure করতে হবে । সেক্ষেত্রে এভাবে ফর্ম টা লিখতে হবে

forms.ChangeUserForm(request.POST, instance = request.user)

def edit_profile(request):
    if request.method == 'POST':
        profile_form = forms.ChangeUserForm(request.POST, instance = request.user)
        if profile_form.is_valid():
            profile_form.save()
            messages.success(request, 'Profile Updated Successfully')
            return redirect('profile')
    
    else:
        profile_form = forms.ChangeUserForm(instance = request.user)
    return render(request, 'update_profile.html', {'form' : profile_form})

এখন আমরা চাই যে একজন logged in ইউজার ছাড়া অন্য কেউ যেনো ঢুকতে না পারে, সেটার জন্যে আমরা loggedin required নামে একটা ডেকরেটর ইউজ করবো। সেটা profile views এর আগে বসায় দিবো আর settings.py এ আমাদের লগইন url টা বলে দিবো।

LOGIN_URL = '/author/login/'
@login_required
def edit_profile(request):
    if request.method == 'POST':
        profile_form = forms.ChangeUserForm(request.POST, instance = request.user)
        if profile_form.is_valid():
            profile_form.save()
            messages.success(request, 'Profile Updated Successfully')
            return redirect('profile')
    
    else:
        profile_form = forms.ChangeUserForm(instance = request.user)
    return render(request, 'update_profile.html', {'form' : profile_form})

Last updated