我有一个django应用程序型号.py如下所示:
class user(models.Model):
uid=models.IntegerField(unique=True,default=0)
uname=models.CharField(max_length=50)
email=models.EmailField()
password=models.CharField(max_length=20)
def __unicode__(self):
return u"{} {}".format(self.uid,self.uname)
class Meta:
db_table="user"
class userresp(models.Model):
uid=models.ForeignKey(user,to_field='uid',null=True,blank=True,on_delete=models.CASCADE)
resp=models.CharField(max_length=20)
datetime=models.DateTimeField(default=timezone.now)
def __unicode__(self):
return u"{} {}".format(self.uid,self.datetime)
class Meta:
db_table="userresp"
一部分视图.py你知道吗
def plogin(request):
if request.method=='POST':
username=request.POST['username']
password=request.POST['password']
if username and password:
username_exist=user.objects.filter(uname=username,password=password)
if not username_exist:
return render(request,'student/loginfailed.html',)
else:
username_exist=user.objects.get(uname=username,password=password)
userid=user.objects.values_list('uid', flat=True).get(uname=username)
rep=userresp()
rep.uid=user.objects.get(uid=userid)
rep.save()
return render(request, 'student/loggedin.html', {'username': username_exist,'userid':userid})
return render(request,'student/plogin.html',)
在这里,我在登录用户时填充了“userresp”表的“uid”外键字段。现在我想在发生这种情况后在另一个视图中填充“resp”字段。但是这个“resp”必须与前面在“plogin”视图中输入的“uid”在同一行中。在这种情况下我怎么做?你知道吗
def mainpage2(request):
if request.method=='POST':
response = request.POST.get("audio1", None)
if response in ["1"]:
return HttpResponse("you are right!")
else:
return HttpResponse("Oops! you got it wrong.")
else:
return HttpResponse("invalid user")
//audio1 are a set of radio buttons in my template
考虑到您的意见,以下是Django方式的答案:
如果您使用Django的
太长了,读不下去了;contrib.auth
,并且除非您构建在现有数据库表之上,这些表阻止您使用它(这就提出了一个问题,为什么在本例中您首先要使用Django),那么没有任何理由使用Django而不是使用contrib.auth
(因为这将是使用Django的最大好处之一)德扬戈):在Django中,您可以为要呈现给用户的页面创建视图。如果他们需要登录,你只需声明。例如,通过在
urls.py
中包装视图声明:其他一切包括重定向等都由Django内置处理。要根据您的外观设置登录页面的样式,请在template dir中的
contrib.auth
所需位置创建一个模板(有关详细信息,请参见https://docs.djangoproject.com/en/1.11/topics/auth/default/#the-login-required-decorator)。你知道吗有一些模块支持双重选择加入、电子邮件、社交媒体等,比如django allauth。你知道吗
经过身份验证的用户作为
django.contrib.auth.models.User
的实例存储在会话中。你知道吗获取视图中请求调用的当前已验证用户的
User
实例的句柄。你知道吗创建一个引用
User
(1:1关系)的模型来存储额外的用户数据,如配置文件设置等,或者检查django allauth等人的配置文件设置。(他们已经支持化身之类的东西了。)您还可以检查权限。所有模型对象都自动创建了不同的基本权限,这些权限已经满足了大多数需求。当然,您可以在上面创建自己的特殊权限。你知道吗
相关问题 更多 >
编程相关推荐