我想将Django连接到我的生产MySQL数据库(只读),以便我可以使用它来使用真实数据测试分析应用程序.
有没有办法指定django应该通过ssh代理连接到db,就像Sequel Pro允许你指定通过特定的SSH代理用用户名和密码连接一样?
如果是这样,DATABASES条目会是什么样的?
我想允许用户创建和查看资源,但前提是:
我已经获得了只读权限,效果很好,因为用户只有在使用主键生成视图集时才有权获取对象列表。例如: GET /api/users/1/notes 仅返回 pk=1 的用户的注释。
然而,在测试中,我发现用户可以通过将另一个用户“拥有”的对象发布到自己的列表端点来创建该对象。例如,用户 1 可以发送 POST 到 /api/users/1/notes,但将注释数据指定为 {user: " http://host.tld/users/2/ ", text: "Look! I create a在另一个人的帐户中注明!”}
我在下面找到了一个似乎工作正常的修复程序,尽管我感觉自己正在逆流而上。现在,在自定义权限内,我创建将要创建的对象的实例,并检查其所有者是否是发出请求的用户。
有没有更干净的方法来做到这一点?
当前修复:
def has_permission(self, request, view):
if request.user.is_staff:
return True
elif request.method in permissions.SAFE_METHODS:
# check that the user is looking for their own list
return request.user == User.objects.get(pk=view.kwargs['user_pk'])
elif request.method not in permissions.SAFE_METHODS:
# the user can create/modify the object if the new object's user == the request user
# roundabout way of figuring …Run Code Online (Sandbox Code Playgroud)