我刚刚注意到,一个用户可以通过更改URL中的其他用户pk或用户名(作为slug)来手动访问另一个用户更新概要视图。 比如说
http://127.0.0.1:8000/account/dashboard/18/updateprofile
假设是用户更新配置文件url,如果该用户将pk更改为19并进行编辑,则将编辑具有pk 19配置文件的用户,这是错误还是我方的错误?多谢各位
我在这里的看法
class ProfilepdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
login_url = 'userlogin'
fields = ('age', 'location')
model = UserProfile
template_name = 'account/updateprofile.html'
success_message = "Your profile was successfully updated"
网址
path('account/dashboard/<int:pk>/updateprofile', views.ProfilepdateView.as_view(), name="updateprofile"),
谢谢我所有能干的老板和大师们,这就是我为解决问题而添加的观点
最后的观点是这样的
这取决于你控制谁能做什么,在哪里-Django猜不到这一点。这里有两种解决方案:
1/保持url不变,但检查是否允许当前用户(
request.user
)编辑此配置文件:2/从url中删除配置文件id,并使用
request.user
获取当前用户的配置文件这样,其他用户仍然可以访问其他用户页面,但无法更新它。如果最初只希望概要文件的所有者能够访问更新页面,则可以限制在模板中查看
或者就在眼前
相关问题 更多 >
编程相关推荐