私は2つのグループ(教授、学生)を作りたいと思います。また、生徒のコースの作成と削除を制限したいと考えています。Djangoグループとアクセス許可
views.py:
def is_professor(function=None):
def _is_professor(u):
if user.groups.filter(name='Professor').exists():
return True
else:
raise HttpResponseForbidden
return _is_professor(function)
class ListCourseView(ListView):
model = Course
template_name = 'course_list.html'
fields = '__all__'
@is_professor
class CreateCourseView(CreateView):
def get_queryset(self, request):
if not request.user.is_superuser:
return False
model = Course
template_name = 'course/edit_course.html'
fields = '__all__'
def get_success_url(self):
return reverse('courses-list')
def get_context_data(self, **kwargs):
context = super(CreateCourseView, self).get_context_data(**kwargs)
context['action'] = reverse('courses-new')
return context
class UpdateCourseView(UpdateView):
model = Course
template_name = 'course/edit_course.html'
fields = '__all__'
def get_success_url(self):
return reverse('courses-list')
def get_context_data(self, **kwargs):
context = super(UpdateCourseView, self).get_context_data(**kwargs)
context['action'] = reverse('courses-edit',
kwargs={'pk': self.get_object().id})
return context
class DeleteCourseView(DeleteView):
model = Course
template_name = 'course/delete_course.html'
def get_success_url(self):
return reverse('courses-list')
models.py
class Course(models.Model):
name = models.CharField(
max_length=255,
)
def __str__(self):
return ' '.join([
self.name
])
class UserProfile(models.Model):
user = models.OneToOneField(User)
picture = models.ImageField(upload_to='profile_images', blank=True)
class Meta:
permissions = (('add_course', 'Add course'),)
def __unicode__(self):
return self.user.username
これは私が試したものです。まず、私はエラー
NameError: global name 'user' is not defined.
を取得し、第二に、私はまだこれがうまくいくとは思わない:)
AttributeError:タイプオブジェクト 'CreateCourseView'に属性 'groups'がありません /adminページにグループを追加しようとしましたが、動作していません。 – ssapp
これは私の悪いことでした。私は答えを更新しました – rishabsaraf93
もし私が次のように書くならば: def _is_professor(リクエスト): \t \t user = request.user \tuser.groups.filter(name = 'Professor')の場合はです。()が存在する: \t \t \tリターン他の真 \t \t:HttpResponseForbidden \tリターン_is_professor(機能) はAttributeError \t \t \t昇給:型オブジェクトは、 'CreateCourseView' 属性」ユーザーの何を持っていません。 私は問題がmodels.pyにあると思います。 – ssapp