Como restringir o acesso a páginas com base no tipo de usuário no Django

Eu tenho uma pergunta básica que pode ser útil para novos desenvolvedores do Django.

Eu criei meu próprio UserProfile no Django. Este UserProfile tem um campo específico chamado 'tipo'. Este campo pode ter dois valores (até agora talvez mais no futuro): Masculino - M / Feminino - 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')

Basicamente, eu queria permitir o acesso para restringir o acesso ou para adaptar o conteúdo da página, dependendo do tipo de usuário. Até agora, usei uma abordagem básica e iniciante que consiste em testar o tipo de usuário em uma visualização e depois processar a página:

def OnePage(request):
    if request.user.type == 'M':
        ....
    else if request.user.type =='F':
        ....

Então eu também preciso adaptar o modelo renderizado dependendo do tipo de usuário: um usuário do sexo masculino não terá a mesma página de perfil que um usuário do sexo feminino.

Tenho certeza que existem maneiras melhores de fazer isso, mas como um iniciante do Django eu estou completamente perdido com todas as possibilidades do Django. Então, se você tem alguma das melhores práticas para implementar isso, por favor me diga (obviamente eu gostaria de um código DRY que eu pudesse usar em todas as visualizações!)

Obrigado pela ajuda.

questionAnswers(4)

yourAnswerToTheQuestion