【发布时间】:2019-06-12 06:39:13
【问题描述】:
我目前有一个订单管理应用。但是我正在为其创建的团队有两个部门,办公室和工厂,他们将使用相同的应用程序,但每个团队都可以访问他们需要的东西。如果我应该创建两个不同的应用程序来登录同一个系统(但这将是冗余代码),或者是否有任何其他方式可以设置权限,我会感到困惑。我尝试使用 django 管理员权限,但它们似乎不起作用。
【问题讨论】:
标签: django django-forms django-authentication
我目前有一个订单管理应用。但是我正在为其创建的团队有两个部门,办公室和工厂,他们将使用相同的应用程序,但每个团队都可以访问他们需要的东西。如果我应该创建两个不同的应用程序来登录同一个系统(但这将是冗余代码),或者是否有任何其他方式可以设置权限,我会感到困惑。我尝试使用 django 管理员权限,但它们似乎不起作用。
【问题讨论】:
标签: django django-forms django-authentication
你可以为不同的团队创建不同的html页面,比如office团队有自己的html页面,工厂团队有不同的html页面。
def user_login(request):
if request.method == 'POST':
username=request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username,password=password)
if user:
if user.is_active:
if user.is_admin:
login(request,user)
return HttpResponseRedirect(reverse('adminpage'))
#return render(request,'admin.html')
else:
login(request,user)
return HttpResponseRedirect(reverse('userpage'))
#return render(request,'user.html')
else:
return HttpResponseRedirect('Account not active')
else:
#message={"info":"someone tried to login and failed! ","details":"username :{} and password: {}".format(username,password)}
return HttpResponse("someone tried to login and failed ! <br />details: <br />username: {} <br /> password:{} ".format(username,password))
else:
return render(request,'login.html')
您可以根据条件创建具有指定角色的活动模型。(您可以为工厂和办公室创建单选按钮,并根据单选按钮对代码工作进行建模。
class MyUser(AbstractBaseUser):
email = models.EmailField(verbose_name='email address',max_length=255,unique=True,)
full_name = models.CharField(max_length=255,null=True,blank=True)
date_of_birth = models.DateField()
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_agent = models.BooleanField(default=False)
选择是:
USER_CHOICES = (
('is_admin','ADMIN'),
('is_agent', 'AGENT')
)
【讨论】:
您可以为用户和员工提供相同的身份验证页面,并将他们重定向到相同的页面(假设 dashboard )。现在您可以在仪表板中添加一个链接,该链接仅在登录用户是超级用户时可见。该链接将重定向到管理界面。
仪表板可能是两个用户共同的东西。
希望这会有所帮助。
【讨论】: