Как ограничить доступ к страницам в зависимости от типа пользователя в Django
У меня есть основной вопрос, который может быть полезен для новых разработчиков Django.
Я создал свой собственный UserProfile в Django. Этот UserProfile имеет специальное поле, называемое «тип». Это поле может иметь два значения (до сих пор, может быть, больше в будущем): Мужской - M / Женский - F:
from django.contrib.auth.models import User
GENDER = (
(M, 'Male'),
(F, 'Female'),
)
class UserProfile(models.Model):
user = models.OneToOneField(User)
type = models.CharField( max_length=2,
choices=GENDER,
default='F')
По сути, я хотел разрешить доступ, чтобы ограничить доступ или адаптировать содержимое страницы в зависимости от типа пользователя. До сих пор я использовал действительно базовый и начинающий подход, который заключается в тестировании типа пользователя в представлении и последующей обработке страницы:
def OnePage(request):
if request.user.type == 'M':
....
else if request.user.type =='F':
....
Затем мне также нужно адаптировать шаблон, отображаемый в зависимости от типа пользователя: у пользователя мужского пола не будет той же страницы профиля, что у пользователя женского пола.
Я уверен, что есть лучшие способы сделать это, но, как новичок в Django, я совершенно потерян со всеми возможностями Django. Так что, если у вас есть какие-либо лучшие практики для реализации этого, пожалуйста, сообщите мне (очевидно, я хотел бы, чтобы СУХОЙ код я мог использовать при каждом просмотре!)
Спасибо за помощь.