我希望能够检查访问页面的用户是否是特定用户。
例如,当用户访问我的博客应用程序上的“编辑帖子”页面时,我想确保该用户是该帖子的作者。
目前,我检查访问“/Blog/Edit//”的用户是否具有 blog.change_post 权限。
但是,如果第二个用户(也有该权限)要输入 URL 来更改其他人的帖子,他们将通过该权限检查并能够编辑其他人的帖子。
我想要的是一个@user_passes_test 函数,它根据帖子的作者属性检查访问视图的用户对象。
#/Blog/urls.py
urlpatterns = [
...
path('Edit/<int:pk>', views.BlogEdit, name='BlogEdit'),
...
]
#/Blog/views.py
@permission_required('blog.change_post', login_url='/Portal/login')
def BlogEdit(request, pk):
post = get_object_or_404(Post, pk=pk)
if request.method == "POST":
form = PostForm(request.POST, instance=post)
if form.is_valid():
post = form.save(commit=False)
post.save()
return redirect('/Blog', pk=post.pk)
else:
form = PostForm(instance=post)
return render(request, 'Blog/Edit.html', {'form': form})
Run Code Online (Sandbox Code Playgroud)