class SubjectListView(TemplateView): template_name = "grades/subjects.html" page_title = "Your Subjects" studied_subjects = None form = None @method_decorator(login_required) def dispatch(self, request, *args, **kwargs): return super(SubjectListView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(SubjectListView, self).get_context_data(**kwargs) context["page_title"] = self.page_title context["studied_subjects"] = self.studied_subjects context["form"] = self.form return context def post(self, request): self.form = AddSubjectForm(request.POST) if self.form.is_valid(): subject = self.form.save(commit=False) subject.student = request.user.student subject.save() return self.get(request) def get(self, request): self.form = AddSubjectForm() self.studied_subjects = request.user.student.studiedsubject_set.all() return render(request, self.template_name, self.get_context_data())