[英]How to extract particular record from QuerySet using Django?
比方說:我有views.py
。 這里的Employees
是 model class,其中包含一些字段,例如:姓名、email、通行證、手機等。
def login(request):
if request.method == 'POST':
emp = Employees.objects.filter(email=request.POST['email'],
password=request.POST['password'])
if emp:
# Now here I'm getting confused how to get particular record like id,
# email, pass from emp var to store in session.
request.session['id'] = emp[0].id # here is the main problem
request.session['email'] = emp[0].email
stmt1
stmt2
return redirect('/homepage')
else:
return render(request, 'forms/login.html')
else:
stmt1
stmt2
最后我說這是我想從查詢集中得到的提示。 請不要問我為什么要編寫代碼。 我可能是錯的,所以請忽略我的錯誤,只給我發現問題的最佳方法 # 所以與大家分享。
由於您期望返回單個 object,因此您可以在objects.get()
旁邊使用try/except
塊
就像是:
try:
employee = Employee.objects.get(email=request.POST['email'],password=request.POST['password']
return redirect('/homepage')
except Employee.DoesNotExist:
return render(request, 'forms/login.html')
我建議閱讀 Django 會話的官方文檔,完成了很多事情,代碼很少,你不用擔心。
這是一個例子:
def login(request):
m = Member.objects.get(username=request.POST['username'])
if m.password == request.POST['password']:
request.session['member_id'] = m.id
return HttpResponse("You're logged in.")
else:
return HttpResponse("Your username and password didn't match.")
用你的代碼翻譯:
def login(request):
if request.method == 'POST':
emp = Employees.objects.filter(email=request.POST['email'],password=request.POST['password']).first()
if emp:
request.session['id'] = emp.id
request.session['email'] = emp.email
return redirect('/homepage')
else:
return render(request, 'forms/login.html')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.