Создание сертификатов с помощью Django ⇐ Python
-
Anonymous
Создание сертификатов с помощью Django
Я создаю сайт образовательных технологий, на котором после прохождения пользователем курса и прохождения тестов он генерирует сертификат, используя существующий шаблон. Я планирую собрать имя и фамилию пользователя из модели пользователя, дату создания сертификата, шаблон сертификата, а затем применить его к сертификату.
Я уже написал логику, но мне все еще нужна помощь, поскольку код возвращает ошибку фиксации атрибута. Я не знаю, что делать сейчас
класс get_score(APIView): def get(self, request, quiz_id=None, *args, **kwargs): пользователь = self.request.user данные = {} тотал_балл = 0 total_possible_score = 0 пытаться: main_quiz = MainQuiz.objects.get(id=quiz_id) викторина = main_quiz.quizzes.all() для индивидуального_викторины в викторине: total_possible_score += индивидуальный_викторина.вопрос.count() баллы = Score.objects.filter(user=user, quiz__in=quiz) для оценки в баллах: тотал_score += счет.тотал счет.итог = 0 счет.сохранить() UserAnswer.objects.filter(score=score).delete() порог = общий_возможный_счет * 0,5 данные['total'] = total_score данные['possible_score'] = total_possible_score если total_score >= порог: FONT_FILE = ImageFont.truetype(r'font/KaushanScript-Regular.otf', 180) FONT_COLOR = "#FFFFFF" шаблон = Image.open(r'certificates/cert1.png') ШИРИНА, ВЫСОТА = шаблон.размер первое_имя = пользователь.первое_имя последнее_имя = пользователь.фамилия_имя имя = имя_имя + " " + фамилия_имя image_source = Image.open(r'certificates/cert1.png') рисовать = ImageDraw.Draw(источник_изображения) name_width, name_height = draw.textsize(имя, шрифт=FONT_FILE) draw.text(((ШИРИНА - ширина_имя) / 2, (ВЫСОТА - высота_имя) / 2 - 30), имя, fill=FONT_COLOR, шрифт=FONT_FILE) cert = certificate.objects.create(user=user, image_fmt=image_source) message = {'message': 'Вы успешно завершили курс.', 'img_certificate': cert.image_fmt, 'данные': данные} еще: message = {'message': 'Пройдите тест еще раз. Повезет в следующий раз', 'данные': данные} вернуть ответ (сообщение, статус = статус.HTTP_200_OK) кроме MainQuiz.DoesNotExist: return Response({'ошибка': 'MainQuiz не найден'}, status=status.HTTP_404_NOT_FOUND) Это мой код. Что я могу сделать, чтобы все работало идеально?
Я создаю сайт образовательных технологий, на котором после прохождения пользователем курса и прохождения тестов он генерирует сертификат, используя существующий шаблон. Я планирую собрать имя и фамилию пользователя из модели пользователя, дату создания сертификата, шаблон сертификата, а затем применить его к сертификату.
Я уже написал логику, но мне все еще нужна помощь, поскольку код возвращает ошибку фиксации атрибута. Я не знаю, что делать сейчас
класс get_score(APIView): def get(self, request, quiz_id=None, *args, **kwargs): пользователь = self.request.user данные = {} тотал_балл = 0 total_possible_score = 0 пытаться: main_quiz = MainQuiz.objects.get(id=quiz_id) викторина = main_quiz.quizzes.all() для индивидуального_викторины в викторине: total_possible_score += индивидуальный_викторина.вопрос.count() баллы = Score.objects.filter(user=user, quiz__in=quiz) для оценки в баллах: тотал_score += счет.тотал счет.итог = 0 счет.сохранить() UserAnswer.objects.filter(score=score).delete() порог = общий_возможный_счет * 0,5 данные['total'] = total_score данные['possible_score'] = total_possible_score если total_score >= порог: FONT_FILE = ImageFont.truetype(r'font/KaushanScript-Regular.otf', 180) FONT_COLOR = "#FFFFFF" шаблон = Image.open(r'certificates/cert1.png') ШИРИНА, ВЫСОТА = шаблон.размер первое_имя = пользователь.первое_имя последнее_имя = пользователь.фамилия_имя имя = имя_имя + " " + фамилия_имя image_source = Image.open(r'certificates/cert1.png') рисовать = ImageDraw.Draw(источник_изображения) name_width, name_height = draw.textsize(имя, шрифт=FONT_FILE) draw.text(((ШИРИНА - ширина_имя) / 2, (ВЫСОТА - высота_имя) / 2 - 30), имя, fill=FONT_COLOR, шрифт=FONT_FILE) cert = certificate.objects.create(user=user, image_fmt=image_source) message = {'message': 'Вы успешно завершили курс.', 'img_certificate': cert.image_fmt, 'данные': данные} еще: message = {'message': 'Пройдите тест еще раз. Повезет в следующий раз', 'данные': данные} вернуть ответ (сообщение, статус = статус.HTTP_200_OK) кроме MainQuiz.DoesNotExist: return Response({'ошибка': 'MainQuiz не найден'}, status=status.HTTP_404_NOT_FOUND) Это мой код. Что я могу сделать, чтобы все работало идеально?
Мобильная версия