簡體   English   中英

如何使用 Django 從 QuerySet 中提取特定記錄?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM