7
Tôi muốn đảm bảo request.user chỉ có thể đưa ra yêu cầu POST để tạo chủ đề diễn đàn trong đó chúng là auther. Với PUT và DELETE tôi có thể đạt được điều đó bằng cách sử dụng has_object_permission
nhưng với POST tôi không thể làm điều đó, tôi đoán vì đối tượng chưa được tạo ra.Quyền Django Rest cấp đối tượng trên POST
class TopicPermission(IsAuthenticatedOrReadOnly):
"""
Any user should be able to read topics but only authenticated
users should be able to create new topics. An owner or moderator
should be able to update a discussion or delete.
"""
def has_object_permission(self, request, view, obj):
if request.method in SAFE_METHODS:
return True
# Instance must have an attribute named `author` or moderator
return obj.author == request.user or request.user.forum_moderator
Tôi làm cách nào để xác minh số request.user == obj.author
trong yêu cầu POST?
Bạn có một 'author' lĩnh vực trên serializer mà bạn đang cố gắng để đảm bảo được thiết lập cho người dùng hiện nay khi cresting sự vật? Có nhiều cách tốt hơn để làm điều đó hơn bằng cách thực hiện kiểm tra quyền. –
vâng, không phải vậy. Nó hoạt động tốt cho PUT và DELETE, nhưng với POST has_object_permission không hoạt động. – awwester
Bởi "không hoạt động", bạn có nghĩa là "không được gọi là", "gây ra lỗi" hay "không bao giờ vượt qua"? Nó không rõ ràng những gì bạn đang cố gắng làm trong câu hỏi của bạn, và nó [mùi giống như một vấn đề XY] (http://meta.stackexchange.com/q/66377/159034). –