如何为 Django 中的特定用户授予模型对象的访问权限
How to give access for a model object to a specific user in Django
我正在 Django 中做一个在线 classroom 项目,我在其中创建了一个名为 create_course 的模型,教师可以访问该模型。现在我正在尝试将其设计为创建 class 的老师,只有他在登录后才能看到这个,另一位老师不应该看到他的 classes 以及如何将学生添加到那个特定的 class 我创造了
课程模型
class course(models.Model):
course_name = models.CharField(max_length=200)
course_id = models.CharField(max_length=10)
course_sec = models.IntegerField()
classroom_id = models.CharField(max_length=50,unique=True)
views.py
def teacher_view(request, *args, **kwargs):
form = add_course(request.POST or None)
context = {}
if form.is_valid():
form.save()
return HttpResponse("Class Created Sucessfully")
context['add_courses'] = form
return render(request, 'teacherview.html', context)
forms.py
from django import forms
from .models import course
class add_course(forms.ModelForm):
class Meta:
model = course
fields = ('course_name', 'course_id', 'course_sec', 'classroom_id')
在课程模型中增加一个与用户模型建立关系的字段。从而可以得到创建课程的老师的详细信息。
from django.contrib.auth.models import User
class course(models.Model):
course_name = models.CharField(max_length=200)
course_id = models.CharField(max_length=10)
course_sec = models.IntegerField()
classroom_id = models.CharField(max_length=50,unique=True)
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
在您的视图函数中,您可以检查登录用户是否与请求课程的创建用户相同。
def teacher_view(request, *args, **kwargs):
# since this is course specific view, you will be passing an identiier or pk of the course as an argument to this function.
course_obj = Course.objects.get(id="identifier")
if request.user == course_obj.created_by:
# logged in user is same as the creator of the course
else:
# redirect
我更愿意创建权限并在特定模型中拥有这些权限。您也可以尝试一下。如果它不起作用,请告诉我。
我正在 Django 中做一个在线 classroom 项目,我在其中创建了一个名为 create_course 的模型,教师可以访问该模型。现在我正在尝试将其设计为创建 class 的老师,只有他在登录后才能看到这个,另一位老师不应该看到他的 classes 以及如何将学生添加到那个特定的 class 我创造了
课程模型
class course(models.Model):
course_name = models.CharField(max_length=200)
course_id = models.CharField(max_length=10)
course_sec = models.IntegerField()
classroom_id = models.CharField(max_length=50,unique=True)
views.py
def teacher_view(request, *args, **kwargs):
form = add_course(request.POST or None)
context = {}
if form.is_valid():
form.save()
return HttpResponse("Class Created Sucessfully")
context['add_courses'] = form
return render(request, 'teacherview.html', context)
forms.py
from django import forms
from .models import course
class add_course(forms.ModelForm):
class Meta:
model = course
fields = ('course_name', 'course_id', 'course_sec', 'classroom_id')
在课程模型中增加一个与用户模型建立关系的字段。从而可以得到创建课程的老师的详细信息。
from django.contrib.auth.models import User
class course(models.Model):
course_name = models.CharField(max_length=200)
course_id = models.CharField(max_length=10)
course_sec = models.IntegerField()
classroom_id = models.CharField(max_length=50,unique=True)
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
在您的视图函数中,您可以检查登录用户是否与请求课程的创建用户相同。
def teacher_view(request, *args, **kwargs):
# since this is course specific view, you will be passing an identiier or pk of the course as an argument to this function.
course_obj = Course.objects.get(id="identifier")
if request.user == course_obj.created_by:
# logged in user is same as the creator of the course
else:
# redirect
我更愿意创建权限并在特定模型中拥有这些权限。您也可以尝试一下。如果它不起作用,请告诉我。