我正在使用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实现此目的的最佳方法是什么?
提前致谢。
答案 0 :(得分: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()