Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-查看其他用户配置文件_Django_Python 3.x_Django Models_Django Templates_Django Views - Fatal编程技术网

Django-查看其他用户配置文件

Django-查看其他用户配置文件,django,python-3.x,django-models,django-templates,django-views,Django,Python 3.x,Django Models,Django Templates,Django Views,我正在使用Django 1.6创建一个web应用程序。。我有用户和用户配置文件,并设计了模板来显示用户的配置文件信息 class UserProfile(models.Model): class Meta: app_label = 'xyz' user = models.OneToOneField(User, related_name='user_profile') description = models.CharField(max_length=20

我正在使用Django 1.6创建一个web应用程序。。我有用户和用户配置文件,并设计了模板来显示用户的配置文件信息

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实现此功能的最佳方法是什么


提前感谢。

Django为每个型号提供了一组默认值(更改、添加、删除)。您可以在模板中使用它们来隐藏按钮,或者使用简单的检查来确定显示的用户是否也是查看页面的用户

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

然后,在您的POST请求视图中,您希望检查是否有人试图更改另一个用户并返回HttpResponseForbidden

from django.http import HttpResponseForbidden

...

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

谢谢你的解决方案。。。我很想知道是否有替代的简单解决方案,以避免模板中的ifs…)从我的头顶上。。。您可以1)使用一个变量is_own_profile,该变量为空或包含css类的名称,该类使所有子元素中的所有按钮都隐藏,或者2)如果is_own_profile为false,则执行一个小javascript函数来隐藏按钮,这样您就可以只使用一个“if”。此解决方案不会带来安全威胁吗?不,无论是否有表单和按钮,用户都可以构造并发送自己的POST请求。这就是为什么您需要在后端验证是否允许用户进行更改。
from django.http import HttpResponseForbidden

...

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