Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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
Python 如何阻止任何人更新任何人';什么是细节?_Python_Django - Fatal编程技术网

Python 如何阻止任何人更新任何人';什么是细节?

Python 如何阻止任何人更新任何人';什么是细节?,python,django,Python,Django,我正在使用UpdateView允许用户更新其详细信息: #views.py class Profile(UpdateView): model = Freelancer fields = ['email', 'first_name', 'surname', 'university', 'biography'] template_name = "freelancestudent/profile.html" 用户可以通过url.py获取他们的个人资料: url(r'^prof

我正在使用
UpdateView
允许用户更新其详细信息:

#views.py
class Profile(UpdateView):
    model = Freelancer
    fields = ['email', 'first_name', 'surname', 'university', 'biography']
    template_name = "freelancestudent/profile.html"
用户可以通过
url.py
获取他们的个人资料:

url(r'^profile/(?P<pk>\d+)/$', views.Profile.as_view(), name="profile"),
url(r'^profile/(?P\d+/$),views.profile.as_view(),name=“profile”),
基础模板包含一个超链接

<a href="/profile/{{user.id}}">Profile |</a>

因此,ID为3的用户单击
Profile
链接,地址栏显示
http://127.0.0.1:8000/profile/3/
,他们可以编辑个人资料并保存,一切都很好

但是,如果用户将URL扩展为有效的
user.id
,则可以编辑其详细信息


我怎样才能防止这种情况

一个选项是覆盖视图的
get\u queryset
方法,并基于
self.request.user
进行过滤

class Profile(UpdateView):
    ...
    def get_queryset(self):
        queryset = super(Profile, self).get_queryset()
        if not self.request.user.is_authenticated():
            return queryset.none()
        else:
            return queryset.filter(pk=self.request.user.pk)
user.is\u authenticated()
检查处理未登录的用户。如果视图使用登录所需的装饰器或mixin,则不需要