小编mgo*_*ohn的帖子

将Django连接到代理服务器后面的数据库

我想将Django连接到我的生产MySQL数据库(只读),以便我可以使用它来使用真实数据测试分析应用程序.

有没有办法指定django应该通过ssh代理连接到db,就像Sequel Pro允许你指定通过特定的SSH代理用用户名和密码连接一样?

如果是这样,DATABASES条目会是什么样的?

mysql django

6
推荐指数
1
解决办法
3478
查看次数

Django Rest Framework:基于对象属性/所有权的权限

我想允许用户创建和查看资源,但前提是:

  1. 他们是员工或
  2. 他们是他们试图创建/查看的对象的“所有者”

我已经获得了只读权限,效果很好,因为用户只有在使用主键生成视图集时才有权获取对象列表。例如: 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)

python django django-rest-framework

5
推荐指数
1
解决办法
1616
查看次数

标签 统计

django ×2

django-rest-framework ×1

mysql ×1

python ×1