以下是一个简化的Django登录和权限系统的示例代码。假设已经有了一个Django项目和应用。
首先,在models.py
中定义用户模型和权限模型:
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
is_admin = models.BooleanField(default=False)
class UserPermission(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
can_edit_data = models.BooleanField(default=False)
然后,在views.py
中创建登录视图:
from django.contrib.auth import authenticate, login
from django.http import HttpResponse
from django.shortcuts import redirect
def custom_login(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
# 权限检查
if user.is_admin:
return redirect('admin_page')
elif user.userpermission.can_edit_data:
return redirect('edit_data_page')
else:
return redirect('user_page')
else:
return HttpResponse('Invalid login credentials')
return redirect('login_page')
在urls.py
中定义相应的URLs:
from django.urls import path
from .views import custom_login
urlpatterns = [
path('login/', custom_login, name='login'),
path('admin_page/', admin_view, name='admin_page'),
path('user_page/', user_view, name='user_page'),
path('edit_data_page/', edit_data_view, name='edit_data_page'),
]
确保在settings.py
中设置了正确的AUTH\_USER\_MODEL:
AUTH_USER_MODEL = 'your_app_name.CustomUser'
这个简化的例子展示了如何在Django中实现一个基本的登录系统,并根据用户的权限将其重定向到不同的页面。在实际应用中,你可能需要使用更复杂的权限系统,比如Django的内置权限系统或者Django-guardian,以及更完善的登录表单和视图逻辑。