我正在使用 Django 的 UpdateView 来更新用户的个人资料。 我在 url 中传递配置文件的 pk,如下所示:
url(r'^profile/edit/(?P<pk>(\d+))$', profileviews.ProfileUpdateView.as_view(),
在 view.py 中,我只使用 UpdateView:
class ProfileUpdateView(UpdateView):
model = Profile
form_class = UserProfileForm
它可以工作。 但是,我发现如果我以另一个用户身份登录并输入相同的 url,我将能够编辑该用户的个人资料! 这绝对是错误的,其他用户绝不应该有权编辑其他人的个人资料。
请问有没有很好的方案可以解决这个问题?在 url 中隐藏 pk?或者其他更好的解决方案?
非常感谢。
最佳答案
网址
# ... omitted
url(r'^profile/edit/$', profileviews.ProfileUpdateView.as_view(),
# ... omitted
观看次数
class ProfileUpdateView(UpdateView):
model = Profile
form_class = UserProfileForm
def get_object(self):
"""
Returns the request's user.
"""
return self.request.user.get_profile()
# Then (unrelated, but for security)
dispatch = login_required(UpdateView.dispatch)
关于python - url 中没有 pk 的 Django UpdateView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20975430/