我和我的朋友在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_id
和Admin
)设置两个compagny_user
?redirect compagny_user
每个compagny主页更好吗?答案 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]))
您似乎需要扩展用户模型。