آموزش پایتون

آموزش نمایش محتوا فقط به کاربر لاگین، در جنگو ( به دو روش)

روش های محدود کردن نمایش محتوا به کاربر در جنگو

  • روش اول: استفاده از انوتیشن login_required@ در فانکشن رندرکننده صفحه در فایل views.py
  • روش دوم: استفاده از دستور شرطی if user.is_authenticated در صفحه تمپلیت html

روش اول:

در این روش ، نمایش یا عدم نمایش کامل یک صفحه به کاربر لاگین کرده و لاگین نکرده رو مدیریت می کنیم.

یعنی تعیین می کنیم که فقط اگر کاربر لاگین کرده باشد، صفحه و اطلاعات را به کاربر نمایش دهد (یا کاری مثل لایک کردن پست را انجام دهد). و در صورتی که کاربر لاگین نباشد، او را به صفحه ارور یا صفحه لاگین ریدایرکت کند.

برای این کار به فایل views.py رفته و login_required را ایمپورت می کنیم:

from django.contrib.auth.decorators import login_required

بعد برای مدیریت رکوئست مورد نظر یک فانکشن می نویسیم (مثل تمام فانکشن هایی که رکوئست های کاربر رو مدیریت می کنن) اما در خط قبل از شروع فانکشن، از انوتیشن login_required@ استفاده می کنیم.

این انوتیشن باعث میشه که فقط در صورتی که کاربر لاگین باشه، فانکشن اجرا بشه و در غیر اینصورت پیغام خطا به کاربر نمایش داده بشه.

@login_required
def create(request):
        return render(request, 'page.html')

ریدایرکت کاربر غیرلاگین به صفحه مورد نظر (بجای نمایش پیغام خطا)

اکثر اوقات ما مایل نیستیم که به کاربر پیغام خطا نشون بدیم! بلکه بهتره که کاربر غیرلاگین رو به صفحه لاگین یا صفحه ثبت نام منتقل کنیم.

برای این کار، آدرس صفحه لاگین یا هر صفحه ای که میخوایم کاربر رو به اون ریدایرکت کنیم رو جلو انوتیشن می نویسیم:

@login_required(login_url="/accounts/login/")
def create(request):
        return render(request, 'page.html')

روش دوم:

این روش برای وقتیست که ما نمیخوایم کل صفحه رو از دید کاربر غیرلاگین پنهان کنیم. بلکه فقط میخوایم قسمتی از صفحه (مثل اطلاعات) و یا عملکردی از صفحه (مثل لایک کردن) رو از دسترس کاربر غیرلاگین خارج کنیم.

برای این کار، در هر جایی از صفحه تمپلیت (html) میتونیم از دستور شرطی به صورت زیر استفاده کنیم:

{% if user.is_authenticated %}
 کدی که میخوایم کاربر لاگین ببیند
{% else %}
کدی که میخواهیم کاربر غیرلاگین ببیند 
{% endif %}

مثلا برای پیاده سازی دکمه لایک، میتونیم دوتا دکمه همسان رو در قسمت لاگین و غیر لاگین طراحی کنیم، که یکیش واقعا فرم لایک کردن باشه، و دومی یک دکمه فیک که به صفحه لاگین لینک شده.

و در صورتی که کاربر لاگین نکرده باشه، با کلیک بر روی این دکمه،‌به صفحه لاگین منتقل بشه.

حامد عسکریان

برنامه نویس و عاشق تکنولوژی

دیدگاهتان را بنویسید

دکمه بازگشت به بالا
بستن
بستن