为什么 django rest 框架在创建对象时不检查对象权限?用户应该能够创建他们无法看到、更新或删除的对象是没有意义的(无论如何对我来说)。目前我子类化了一个视图集
class CheckCreatePermissionsViewSet(ModelViewSet):
def perform_create(self, serializer):
'''
Called by create before calling serializer.save()
'''
obj = serializer.save()
try:
self.check_object_permissions(obj)
except:
obj.delete()
raise
Run Code Online (Sandbox Code Playgroud)
为什么默认情况下不实现?这让我很头疼,我想不出它会像这样实施的单一原因。
我在这样的结构中存储一个闭包:
#[derive(Clone)]
struct S<'a> {
func: &'a FnOnce() -> u32
}
fn main() {
let s = S { func: &|| 0 };
let val = (s.func)();
println!("{}", val);
}
Run Code Online (Sandbox Code Playgroud)
当我编译时,s.func无法移动来执行自己.我理解为什么它不能移动(即它只是一个引用,并且它的大小在编译时是不知道的),但不知道为什么它被移动 - 是否只是因为闭包是通过特征实现的?
这是错误消息:
error[E0161]: cannot move a value of type std::ops::FnOnce() -> u32:
the size of std::ops::FnOnce() -> u32 cannot be statically determined
--> main.rs:8:15
|
8 | let val = (s.func)();
| ^^^^^^^^
error[E0507]: cannot move out of borrowed content
--> main.rs:8:15
|
8 | let …Run Code Online (Sandbox Code Playgroud)