我正在嘗試檢查當前登錄的用戶是否是管理員,然后允許他們訪問管理頁面,否則返回主頁。這是我的觀點.pyfrom django.shortcuts import render, redirectfrom django.http import HttpResponsefrom django.contrib.auth import login, logout, authenticatefrom django.contrib import messagesfrom teacher.models import usersdef login(request): if request.method == "POST": username = request.POST['username'] password = request.POST['password'] user = authenticate(username = username, password = password) if user is not None: login(request, user) print (user) messages.success(request, "You have successfully Logged In.") return redirect('index') else: messages.error(request, "You have entered invalid credentials. Please try again") return redirect('login') else: return render(request, 'main/login.html') def admin(request): user = users.objects.get(category = 'admin') if user: return render(request, 'main/admin.html') elif Exception: return render(request, 'main/home.html') 這是我的 models.pyclass users(models.Model): _id = models.AutoField name = models.CharField(max_length = 100) username = models.CharField(max_length = 100) email = models.EmailField(max_length=254) hpassword = models.CharField(max_length = 255) category = models.CharField(max_length=50, default= "teacher")我嘗試過使用不同的查詢方法。但我最終收到錯誤頁面,因為“用戶匹配查詢不存在”。它也不檢查用戶是否登錄。即使用戶未登錄,它也會返回到管理頁面。
2 回答

慕勒3428872
TA貢獻1848條經驗 獲得超6個贊
你搜索過裝飾器嗎?看看在我的 django 應用程序上檢查管理員登錄
對于儀表板訪問檢查Django 登錄裝飾器,如果未登錄,您可以將用戶重定向回登錄頁面。
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
...
對于第二個“用戶匹配查詢不存在”。檢查您是否有數據庫表。確保已運行遷移并使用 Try Exception
try:
user = users.objects.get(category = 'admin')
if user:
return render(request, 'main/admin.html')
except Exception as e:
return render(request, 'main/home.html')
添加回答
舉報
0/150
提交
取消