0

Я использую Django 1.6 для создания веб-приложения. У меня есть пользователи и профили пользователей, и вы создали шаблоны для отображения информации о профиле пользователя.Django - Посмотреть другой профиль пользователя

class UserProfile(models.Model): 
    class Meta: 
     app_label = 'xyz' 

    user = models.OneToOneField(User, related_name='user_profile') 
    description = models.CharField(max_length=200) 
    ... other fields ... 

У меня есть различные кнопки редактирования на шаблоне, где пользователь просматривает информацию о своем профиле. Кроме того, пользователь может просматривать профиль другого пользователя. В этом случае пользователь не должен видеть кнопки редактирования, удаления или добавления.

Есть ли встроенные механизмы безопасности для этого? Каков наилучший способ реализовать это с помощью Django 1.6?

Заранее спасибо.

ответ

0

Django имеет набор по умолчанию permissions (изменить, добавить, удалить) для каждой модели. Вы можете использовать их в своем шаблоне, чтобы скрыть кнопки или использовать простую проверку, если отображаемый пользователь также является пользователем, просматривающим страницу.

{% if perms.accounts.change_user %} 
Edit 
{% endif %} 

или

{% if edit_user == user %} 
Edit 
{% endif %} 

Тогда же на ваш взгляд на запрос POST вы хотите проверить, если кто-то пытается изменить другого пользователя и возвращать HttpResponseForbidden.

from django.http import HttpResponseForbidden 

... 

if not request.user == user: 
    return HttpResponseForbidden() 
+0

Почему downvote? –

+0

Проголосовать не мной ... Попробуйте решение ... – Srikrishnan

+0

Спасибо за решение ... Было интересно узнать, есть ли альтернативные простые решения, чтобы избежать ifs в шаблонах .. :) – Srikrishnan

Смежные вопросы