呈现2个不同用户

时间:2017-07-10 12:55:05

标签: django

我和我的朋友在Django应用程序上工作,我们的网站出现了问题。

要恢复:

我们有一个管理员用户,可以从我们的网站访问每个部分。 我们的应用管理不同公司的合同。每个公司都可以访问他们的主页并咨询干预措施,积分平衡,......

每个公司都有一个用户帐户可以在我们的网站上连接。

为了在日志过程之后访问他们的主页,我写了log application

def connexion(request):
    error = False

    if request.method == "POST":
        form = ConnexionForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data["username"]
            password = form.cleaned_data["password"]
            user = authenticate(username=username, password=password)  
            if user.username == 'Admin':  
                login(request, user)
                return HttpResponseRedirect(reverse('accueil'))
            elif user.username == 'Compagny1':  
                login(request, user)
                return HttpResponseRedirect('http://localhost:8000/Compagny/1/')
            elif user.username == 'Compagny2':  
                login(request, user)
                return HttpResponseRedirect('http://localhost:8000/Compagny/2/')
            else : 
                error = True
    else:
        form = ConnexionForm()

    return render(request, 'connexion.html', locals())

然后,Compagny model看起来像:

class Compagny(models.Model):

    Nom = models.CharField(null= False, max_length=70, verbose_name='Nom de Société')
    ...
    ...
    user = models.ForeignKey(settings.AUTH_USER_MODEL, default=" ")

允许转到Homepage的网址是:

url(r'^Compagny/(?P<id>\d+)/$', views.Homepage, name="Homepage"),

最后,在我看来,我有:

@login_required
def Homepage(request, id) :

    compagny = get_object_or_404(Compagny, pk=id, user=request.user)
    ...
    # form part


        return HttpResponseRedirect('http://localhost:8000/Compagny/'+id)
    ...
    return render(request, 'Homepage.html', context)

我对我的流程有2个问题:

  • 如何为一个合并(user_idAdmin)设置两个compagny_user
  • 除了我的脚本部分之外,还有另一种方法可以redirect compagny_user每个compagny主页更好吗?

1 个答案:

答案 0 :(得分:1)

第一个问题:我认为最好从用户指向Compagny。然后,您可以让许多用户指向同一家公司。但是,如果你愿意,你可以改变到很多人的关系。更改您的Compagny模型:

class Compagny(models.Model):

    Nom = models.CharField(null= False, max_length=70, verbose_name='Nom de Société')
    ...
    ...
    user = models.ManyToManyField(settings.AUTH_USER_MODEL.username)

第二个问题:您可以创建一个字典,其中用户作为键,公司作为值。例如:

AUTH_USER_COMPANY = {
    'user1': 1,
    'user2': 1,
    'user3': 2,
   ...
   }

。然后HttpResponseRedirect("/Compagny/"+ str(settings.AUTH_USER_COMPANY[settings.AUTH_USER_MODEL]))

您似乎需要扩展用户模型。