1

您好,我使用@login_required 来限制对某些为用户存储书签的页面的访问,但在某些情况下,我希望用户仅访问他的书签,并且如果他尝试输入编辑属于另一个用户的书签的 URL,则必须停止访问. 我怎样才能做到这一点?

4

1 回答 1

3

@login_required可以帮助您确保用户已登录以访问视图。

访问视图后,您可以检查以确保允许用户访问书签,并且仅获取允许他们访问的书签

例如,如果您的网址看起来像

/bookmarks/并且对应于函数bookmarks

@loggin_required
def bookmarks():
  # only fetch book makrs for this user
  bookmarks = Bookmarks.objects.filter(user=request.user)

这将确保用户已登录以访问该 url,并且书签仅对正在查看该页面的用户显示。如果某些用户可以查看其他用户的书签,您可以添加某种权限系统

如果此视图要显示用户的所有书签,并且您想提供一个 url 来编辑书签或类似的东西

bookmarks/{{ bookmark_id }}/edit映射到edit_bookmark

@login_required
def edit_bookmark(bookmark_id):
   # user is guarenteed to be logged in so request.user is available
   # your permission system will depend on how you authenticate whether a user can edit
   # a bookmark or not
   # CHECK if user has permission to edit bookmark
   pass
于 2012-12-03T17:34:55.153 回答