@blackbb

Как сделать отзывы с верификацией на email?

На сайте добавил отзывы к объекту:
class Review(models.Model):
    name = models.CharField(max_length=300, verbose_name='Имя')
    school = models.ForeignKey(School, verbose_name='Школа')
    email =models.EmailField(verbose_name='Почта')
    body = models.TextField(verbose_name='Описание')

Views.py:
class ReviewAdd(CreateView):
    model = Review
    form_class = ReviewAddForm
    template_name = 'school/review_add.html'
    def form_valid(self,form):
        self.object = form.save(commit=False)
        school = get_object_or_404(School, slug=self.kwargs['slug'])
        self.object.school = school
        self.object.save()
        return super(ReviewAdd, self).form_valid(form)

Forms.py:
class ReviewAddForm(forms.ModelForm):
    class Meta:
        model = Review
        fields = '__all__'
        exclude = ['school']

Хочу при добавлении отзыва прикрутить проверку по email. Т.е. чел пишет отзыв, нажимает отправить и его перекидывает на страницу, где написано "Спасибо бла бла бла, на вашу почту отправлена ссылка для подтверждения, перейдите по ней для завершения". На почту приходит сообщение, переходим по ссылке и отзыв публикуется.
Как грамотно реализовать такую верификацию?
  • Вопрос задан
  • 574 просмотра
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
1. Добавьте в модель Review поле Verificated, которое изначально будет проставляться в False.
2. Отправьте письмо с ID созданной записи, и чтобы не подделали, для примера, добавьте md5 от полей Review
3. Когда пользователь перешел по ссылке, сверяете ID и MD5 для него.
4. Если все хорошо, то меняете значение поля Verificated на True
5. Показываете страницу "Отзыв опубликован"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы