私はDjangoでオンライン教室プロジェクトを行っています。そこでは、教師がアクセスできるcreate_courseという名前のモデルを作成しました。今、私はこれを、ログイン後に彼だけがこれを見ることができるクラスを作成する教師として設計しようとしています。別の教師は彼のクラスを見るべきではなく、私が作成した特定のクラスに生徒を追加する方法
コースモデル
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')
ユーザーモデルとの関係を確立するフィールドをコースモデルにもう1つ追加します。したがって、コースを作成した教師の詳細を取得できます。
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
パーミッションを作成し、特定のモデルにパーミッションを設定することをお勧めします。あなたもそれを試してみることができます。うまくいかない場合はお知らせください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加