小编who*_*rth的帖子

Django Rest框架多个数据库

我有一个视图,该视图用于GET和POST到不是默认数据库的数据库。

class DeployResourceFilterView(generics.ListAPIView):
    serializer_class = ResourceSerializer

    def get(self, request, format=None):
        resname = self.request.GET.get('name')
        queryset = Resmst.objects.db_manager('Admiral').filter(resmst_name=resname)
        serializer = ResourceSerializer(queryset)
        if queryset:
            return Response(serializer.data)
        else:
            raise Http404

    def post(self, request, format=None):
        serializer = ResourceSerializer(data=request.DATA, many=True)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)

GET可以正常工作,但在POST上,它总是会抱怨表不存在而不断失败。我的假设是这样做的原因是因为它试图使用默认数据库,而不是我定义为辅助数据库的“海军上将”数据库。如何分配POST以使用特定数据库而不是默认数据库?

django django-rest-framework

4
推荐指数
1
解决办法
3067
查看次数

paramiko - 使用私钥连接 - 不是有效的OPENSSH私钥/公钥文件

我试图找到解决方案,无法理解我做错了什么.

在我的Linux服务器上,我运行了以下命令:

ssh-keygen -t rsa
Run Code Online (Sandbox Code Playgroud)

这生成了一个id_rsaid_rsa.pub文件.

然后我在本地复制它们并尝试运行以下代码:

    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('myserver', username='myuser', key_filename='id_rsa')
    sftp = ssh.open_sftp()
    sftp.chdir('/path/to/file')
    sftp.get(file, os.path.join(tmp_dir, '{0}.existing-{1}'.format('myfile', current_datetime)))
except Exception, err:
    logging.debug(err)
    logging.info('Error connecting to Host')
Run Code Online (Sandbox Code Playgroud)

我在日志中收到以下错误:

2017-08-22 22:41:54,486 Switch to new keys ...
2017-08-22 22:41:54,502 Adding ssh-ed25519 host key for myserver.domain.com: 51ac2fe875499371256dd8c5a132f394
2017-08-22 22:41:54,502 Trying key 7688e32d30edb2c94bfe39be9897004f from id_rsa
2017-08-22 22:41:54,532 userauth is OK
2017-08-22 22:41:54,549 Authentication (publickey) failed.
2017-08-22 22:41:54,563 not a valid OPENSSH private key file
2017-08-22 22:41:54,563 Error …
Run Code Online (Sandbox Code Playgroud)

python paramiko python-2.7

3
推荐指数
2
解决办法
1万
查看次数

Django - Raw查询必须包含主键

这里有一个类似的问题 - 原始查询必须包含主键

但是,我正在运行旧版数据库,因此无法弄清楚主键的问题.

这是我的RAW查询 -

trg = Trgjob.objects.db_manager('AdmiralDEV').raw("""
    SELECT jobdep_id, jm.jobmst_id, jobdep_type, (jm1.jobmst_prntname + '\' + jm1.jobmst_name) AS jobdep_jobmst,
    jobdep_operator, jobdep_status, jobdep_joblogic, jobdep_ingroup, jobdep_dateoffset, jobdep_instoffset,
    jobdep_canignore, jobdep_filename, jobdep_filetype, jobdep_fileextent, nodmst_id, varmst_id, jobdep_value
    FROM Jobdep jd
    INNER JOIN Jobmst jm ON jd.jobmst_id = jm.jobmst_id
    INNER JOIN Jobmst jm1 ON jd.jobdep_jobmst = jm1.jobmst_id
    WHERE jm.jobmst_id = 9878""")
Run Code Online (Sandbox Code Playgroud)

在DB工作正常,但在Django我得到以下失败 -

原始查询必须包含主键

这个模型的主键是"jobdep_id",如下所示在models.py中 -

class Jobdep(models.Model):
    jobdep_id = models.IntegerField(primary_key=True)
Run Code Online (Sandbox Code Playgroud)

python sql django

2
推荐指数
1
解决办法
9969
查看次数

Django queryset返回单个值

我有以下内容-

obj.owner_id = Owner.objects.filter(owner_name=owner_obj).values_list('owner_id')[0]
Run Code Online (Sandbox Code Playgroud)

问题在于它返回的值是一个元组。具体来说-

(786,)
Run Code Online (Sandbox Code Playgroud)

我要返回的只是整数值或786

我究竟做错了什么?

python django

2
推荐指数
2
解决办法
6728
查看次数

python - 单词中的多个字符串

我想这样做 -

word = 'hello'

if 'a' or 'c' in word:
    continue
elif 'e' in word:
    continue
else:
    continue
Run Code Online (Sandbox Code Playgroud)

只有在我没有或者它时它才有用.字符串是一个单词.

python python-2.7

2
推荐指数
1
解决办法
77
查看次数

** 之后的 create() 参数必须是映射,而不是 unicode

我正在尝试使用以下序列化程序进行嵌套写入 -

class UserProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserProfile
        fields = ('company', 'is_admin', 'last_modified', 'uuid')

class UserSerializer(serializers.ModelSerializer):
    profile = UserProfileSerializer()
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'profile')

    def create(self, validated_data):
        profile_data = validated_data.pop('profile')
        user = User.objects.create(**validated_data)
        for profile_data in profile_data:
            UserProfile.objects.create(user=user, **profile_data)
        return user
Run Code Online (Sandbox Code Playgroud)

但是在发完一篇文章后,我得到了以下回溯——

Traceback:
File "/opt/enterpass_app/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/enterpass_app/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view
  58.         return view_func(*args, **kwargs)
File "/opt/enterpass_app/lib/python2.7/site-packages/rest_framework/viewsets.py" in view
  87.             return self.dispatch(request, *args, **kwargs)
File "/opt/enterpass_app/lib/python2.7/site-packages/rest_framework/views.py" in …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

2
推荐指数
1
解决办法
1万
查看次数

djangorest框架序列化器返回名称不是整数

我正在做一个简单的列表视图,其中当前返回如下所示 -

[
    {
        "name": "John",
        "description": "John's Group",
        "owner": 1
    }
]
Run Code Online (Sandbox Code Playgroud)

问题是我不想要那个整数,我希望它像这样显示 -

[
    {
        "name": "John",
        "description": "John's Group",
        "owner": "John Smith"
    }
]
Run Code Online (Sandbox Code Playgroud)

我发现的解决这个问题的唯一方法是做一个像这样的序列化器 -

class ClassListSerializer(serializers.ModelSerializer):
    ownername = serializers.CharField(source='owner.username')
    class Meta:
        model=ClassList
        fields = ('name', 'description', 'ownername')
Run Code Online (Sandbox Code Playgroud)

问题是我不想将该字段更改为ownername.

在模型中设置以下内容适用于模型的传统查询 -

def __str__(self):
    return self.username
Run Code Online (Sandbox Code Playgroud)

但我猜因为 DRF 的读取方式不同,它不遵守外键映射并返回?

这样做是行不通的,因为它试图覆盖已经存在的内容owner-owner

class ClassListSerializer(serializers.ModelSerializer):
    owner = serializers.CharField(source='owner.username')
    class Meta:
        model=ClassList
        fields = ('name', 'description', 'owner')
Run Code Online (Sandbox Code Playgroud)

那么如何让它显示名称而不是整数呢?

django django-rest-framework

2
推荐指数
1
解决办法
731
查看次数

PowerShell - 如果是特定字符,则删除第一个字符

 $path = "\path\to\my\file"
Run Code Online (Sandbox Code Playgroud)

我想简单地删除第一个\我该怎么做?

如果第一个字符是字母,我不想删除它,除非它是\

powershell

2
推荐指数
1
解决办法
9683
查看次数

正则表达式中未转义的左大括号已弃用,在正则表达式中传递

我正在努力迁移一些遗留代码,Perl 适合以下几行:

$message =~ s/_WIP_list{file}_/$WIP_list{$file}/g;
$message =~ s/_STD_list{file}_/$STD_list{$file}/g;
Run Code Online (Sandbox Code Playgroud)

我应该如何编写它们以避免弃用错误?

perl

2
推荐指数
1
解决办法
990
查看次数

Get-ADGroup 返回与 dsquery 不同的 ObjectGUID

有人可以解释如何获取与 dsquery 返回的相同的 ObjectGUID(除了使用 powershell 之外)吗?

举个例子。

电源外壳

Get-ADGroup "MyGroup" -Properties ObjectGUID
32359aec-2e77-4b0c-b525-3e9a39083314
Run Code Online (Sandbox Code Playgroud)

dsquery(应用程序使用 DSQuery 没有它使用的命令)

7Jo1MncuDEu1JT6aOQgzFA==
Run Code Online (Sandbox Code Playgroud)

编辑 - 为了清楚起见,我想在 powershell 中查询 AD 组并获取 ObjectGUID 的 DSQuery 结果。我不想要 ObjectGUID 的 powershell 结果。

powershell active-directory dsquery

2
推荐指数
1
解决办法
468
查看次数