Как запретить конечным пользователям редактировать скрытое значение ввода в социальном сайте Django
На сайте есть система "Комментарий" и "Ответ на комментарий".
После каждого комментария в шаблоне есть форма "Добавить ответ", которая имеет скрытый вход для переноса комментария пк по его атрибуту value.
- Как предотвратить редактирование конечным пользователем этого скрытого значения ввода?
А если это невозможно, то каков будет правильный подход? - Предотвращение редактирования конечным пользователем: Вы можете использовать html-тип ввода hidden .
Вы не можете запретить кому-то редактировать атрибут 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()
<input type="hidden" value="{comment.pk}">
поскольку он отображается формой, вы можете установить его в режим только для чтения, сделав следующее
<input type="hidden" readonly>
Подробнее об атрибуте readonly вы можете прочитать здесь Атрибут read-only