با سلام و عرض ادب
چطور میتونم برای پروژه ام چند مدل کاربر با حراز هویت های مختلف طراحی کنم ؟
مدل خود جنگو فقط از یک یوزر پشتیبانی میکنه، میخوام بدونم راهی برای طراحی چندین مدل کاربر هست ؟
(به طور مثال برای سایت یک مدرسه ، یک دانش اموز ، یک معلم، یک مدیر)
دسترسی این ها رو چطور میشه تنظیم کرد ؟
با پرمیشن و گروه ، سفارشی سازی نمیشه کرد ؟
پوزش بابت طولانی شدن سوالم
با سلام.
نیازی به طراحی چندین مدل کاربر نیست. می توان هم بر اساس group, permissions این موارد را پیاده سازی کرد و هم اینکه با استفاده از تعریف یک فیلد خاص (مثلا access_level) که دارای مقادیر مختلف هست، سطح دسترسی را تعیین و بر حسب مقدار آن، و با استفاده از پیاده سازی conditional content ، اجازه انجام عملیات مختلف را به کاربر اعطا یا سلب کرد.
موفق باشید.
ببخشید من متوجه نشدم.
یعنی نیازی به اینکه چند مدل کاربر داشته باشیم نیست ؟
با توجه به اینکه یکسری صفحات عمومی هست(یعنی هر سه گروه میتونن ببینن) و بعضی صفحات مخصوص یک گروه خاص
سطح دسترسی رو چطور میتونم محدود کنم ؟
و جسارتا اگر پروژه مشابهی (جهت تفهیم موضوع برای بنده) مد نظر دارید ممنون میشم معرفی بفرمایید
یعنی نیازی به اینکه چند مدل کاربر داشته باشیم نیست ؟
خیر.
البته این یک راه برای این کار است و ممکن است استاد و یا سایر دوستان و شما روش بهتری داشته باشید.
در هر قسمت از برنامه می توانید از طریق request object به prop های مختلف user دسترسی داشته باشید. با فرض اینکه فیلد access_level برای کاربر تعریف شده باشد و مقادیری مثل: 1 برای مدیران، 2 برای کارمندان و ... داشته باشد:
if request.user.access_level == 1:
# this is an Admin User ...حالا می توانید مقدار آنرا از طریق context به template ها انتقال و بر حسب مقدار آن، بخش های مربوطه را در template ها قابل دسترس کنید.
و این کنترل، چیزی علاوه بر شرطهایی نظیر:
if request.user.is_superuser or request.user.is_authenticatedخواهد بود و با ترکیب با شرطهای فوق، می توان مساله را حل کرد.
برای کنترل کاربر، بوسیله گروه ها این نمونه را ببینید:
from django.contrib.auth.models import User, Group
...
...
user = User.objects.get(username="User1")
# or
# user = request.user.username
# check if user belongs to specified group
if user.groups.filter(name="Admins):
# Allow user access
else:
# Redirect user to somewhere else
سلام دوست من
پاسخ دوستمون weby صحیح هستش