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,则不需要