gpt4 book ai didi

django - 如何在 Django 中根据用户类型限制对页面的访问

转载 作者:行者123 更新时间:2023-12-02 08:15:16 25 4
gpt4 key购买 nike

我有一个基本问题,对于新的 Django 开发人员来说可能有用。

我在 Django 中创建了自己的用户配置文件。该用户配置文件有一个名为“类型”的特定字段。该字段可以有两个值(到目前为止可能会更多):男 - 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')

基本上,我想根据用户类型允许访问来限制访问或调整页面内容。到目前为止,我使用了一种非常基本的初学者方法,即在 View 中测试用户类型,然后处理页面:

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

然后,我还需要根据用户类型调整呈现的模板:男性用户不会拥有与女性用户相同的个人资料页面。

我确信有更好的方法可以做到这一点,但作为 Django 初学者,我对 Django 的所有可能性感到非常迷失。因此,如果您有任何实现此功能的最佳实践,请告诉我(显然我想要一个可以在每个 View 上使用的 DRY 代码!)

感谢您的帮助。

最佳答案

要限制访问,请使用 user passes test装饰器:

from django.contrib.auth.decorators import user_passes_test

male_only = lamda u: u.type == 'M'
female_only = lamda u: u.type == 'F'


@user_passes_test(male_only)
def myfunc(request):
pass

@user_passes_test(female_only)
def myotherfunc(request):
pass

关于django - 如何在 Django 中根据用户类型限制对页面的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12597864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com