Как запретить конечным пользователям редактировать скрытое значение ввода в социальном сайте Django

На сайте есть система "Комментарий" и "Ответ на комментарий".
После каждого комментария в шаблоне есть форма "Добавить ответ", которая имеет скрытый вход для переноса комментария пк по его атрибуту value.

  • Как предотвратить редактирование конечным пользователем этого скрытого значения ввода?
    А если это невозможно, то каков будет правильный подход?
  • Вы не можете запретить кому-то редактировать атрибут value, так как это клиентская сторона.

    Лучшим подходом будет проверка на стороне сервера, разрешено ли пользователю комментировать или отвечать на данное сообщение. Например, вы можете проверить, является ли пользователь другом создателя поста. Если нет, вы можете заблокировать запрос.

    Пример:

    # models.py
    class Post(models.Model):
        creator = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
        body = models.TextField()
    
    class User(AbstractUser):
        friends = models.ManyToManyField(get_user_model())
    
    # views.py
    class CommentCreate(View):
        
        def get(self, request, *args, **kwargs):
            # retrieve the post object here
            ...
    
            # check if the user is a friend of the creator
            if post.creator.friends.filter(id=request.user.id).first(): # returns None if none found
                # user is a friend of the creator
                # do your stuff here
            else:
                # user is NOT a friend of the creator
                raise PermissionDenied()
            
    
    1. Предотвращение редактирования конечным пользователем: Вы можете использовать html-тип ввода hidden
    2. .

    <input type="hidden" value="{comment.pk}">

    поскольку он отображается формой, вы можете установить его в режим только для чтения, сделав следующее

    <input type="hidden"  readonly>
    

    Подробнее об атрибуте readonly вы можете прочитать здесь Атрибут read-only

    Вернуться на верх