Python 如何将主键保存为引用
我正在创建一个Django应用程序。我希望登录用户的pk保存在变量userpk中。即使我登录了一个用户,userpk的值仍然是“无”。我做错了什么 视图.pyPython 如何将主键保存为引用,python,django,Python,Django,我正在创建一个Django应用程序。我希望登录用户的pk保存在变量userpk中。即使我登录了一个用户,userpk的值仍然是“无”。我做错了什么 视图.py from django.shortcuts import render, redirect, get_object_or_404 from .models import * userpk = None def login(request): if request.method == 'POST': userna
from django.shortcuts import render, redirect, get_object_or_404
from .models import *
userpk = None
def login(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
try:
account = Account.objects.get(username=username)
except:
return render(request, 'MyApp/login.html')
if password == account.password:
account.pk = userpk
return redirect(f'view_wine/?acc={account.pk}')
else:
return render(request, 'MyApp/login.html')
else:
return render(request, 'MyApp/login.html')
class Account(models.Model):
username = models.CharField(max_length=20)
password = models.CharField(max_length=20)
objects = models.Manager()
def getUsername(self):
return self.username
def getPassword(self):
return self.password
def __str__(self):
return str(self.pk) + ": " + self.username + ": " + self.password
账户数据存储在账户模型中:
型号.py
from django.shortcuts import render, redirect, get_object_or_404
from .models import *
userpk = None
def login(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
try:
account = Account.objects.get(username=username)
except:
return render(request, 'MyApp/login.html')
if password == account.password:
account.pk = userpk
return redirect(f'view_wine/?acc={account.pk}')
else:
return render(request, 'MyApp/login.html')
else:
return render(request, 'MyApp/login.html')
class Account(models.Model):
username = models.CharField(max_length=20)
password = models.CharField(max_length=20)
objects = models.Manager()
def getUsername(self):
return self.username
def getPassword(self):
return self.password
def __str__(self):
return str(self.pk) + ": " + self.username + ": " + self.password
我认为,这是在python中不声明变量
global
的情况,因此,函数中的本地编辑会创建变量的卷影副本,而不会修改函数外部的变量
看一看。关于如何处理全局变量。另外,
account.pk=userpk
您并没有将模型的pk分配给userpk
变量,而是反过来分配。只需删除这一行account.pk=userpk
可能的解决方法是:当用户登录时,您可以在每个视图中访问的请求会话中存储用户pk,以将用户pk保存在userpk中var您可以让userpk=account.pk