您好我使用@login_required限制访问某些为用户存储书签的页面,但在某些情况下我希望用户只能访问他的书签,如果他尝试输入编辑属于书签的网址,则必须停止给另一个用户。我怎么能这样做?
答案 0 :(得分:3)
@login_required
可以帮助您确保用户已登录甚至访问该视图。
访问视图后,您可以检查以确保允许用户访问书签,并且仅获取允许其访问的书签
例如,如果您的网址看起来像
/bookmarks/
并且对应于函数bookmarks
@loggin_required
def bookmarks():
# only fetch book makrs for this user
bookmarks = Bookmarks.objects.filter(user=request.user)
这将确保用户登录以访问该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