小编flo*_*urr的帖子

Django Rest Framework:在ViewSet上启用分页(如ModelViewSet分页)

我有一个像这样的ViewSet来列出用户的数据:

class Foo(viewsets.ViewSet):

    def list(self, request):
        queryset = User.objects.all()
        serializer = UserSerializer(queryset, many=True)
        return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)

我想打开像ModelViewSet的默认分页一样的分页:

{
    "count": 55,
    "next": "http://myUrl/?page=2",
    "previous": null,
    "results": [{...},{...},...,{...}]
}
Run Code Online (Sandbox Code Playgroud)

官方文件说:

只有在使用通用视图或视图集时,才会自动执行分页

...但我的结果集根本没有分页.我该如何分页呢?

python django django-rest-framework

31
推荐指数
4
解决办法
3万
查看次数

在 Docker 中使用 PYTHONDONTWRITEBYTECODE 有什么缺点吗?

在很多基于 Python 的 Docker 教程(例如:this one)中,他们使用该选项PYTHONDONTWRITEBYTECODE是为了让 Python 避免在导入源模块时编写 .pyc 文件(这相当于指定了 -B 选项)。

设置此选项有哪些风险和优势?

python python-3.x docker

25
推荐指数
1
解决办法
2718
查看次数

如何拥有诗歌和预提交包版本的单一事实来源?

我正在研究这个Python 项目模板。它们用于poetry定义开发依赖项

[tool.poetry.dev-dependencies]
black = {version = "*", allow-prereleases = true}
flake8 = "*"
isort = "^5.6"
mypy = ">0.900,<1"
...
Run Code Online (Sandbox Code Playgroud)

它们还用于pre-commit检查 git 和 CI 工作流程的内务工作(例如,格式化、linting、分类等):

minimum_pre_commit_version: 2.8.0
default_stages: [commit, push, manual]
repos:
  - repo: https://github.com/psf/black
    rev: 21.11b1
    hooks:
      - id: black
  - repo: https://github.com/pycqa/flake8
    rev: 4.0.1
    hooks:
      - id: flake8
        args: [--max-line-length=88]
  - repo: https://github.com/pycqa/isort
    rev: 5.10.1
    hooks:
      - id: isort
        args: [--filter-files]
  - ...
Run Code Online (Sandbox Code Playgroud)

就我而言,我肯定想要一个由 Poetry 为我的 IDE 管理的本地版本的开发包,并且我还想“按原样”利用预提交框架,而不需要切换到 …

python pre-commit-hook python-poetry pre-commit.com

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

'MyClass'对象没有属性'__getitem__'

我有一个像这样的课:

class MyClass(object):
    def __init__(self, id, a, b, c):
        self.myList     = []
        self.id         = id
        self.a          = a
        self.b          = b
        self.c          = c

    def addData(self, data):
        self.myList.append(data)
Run Code Online (Sandbox Code Playgroud)

在我的主代码中,我创建了一个名为MyClass实例的列表myClassList.在一行中,我必须检查具有给定的项目是否id已存在.我是这样做的:

id = 'foo' # in real code is set dynamically 
recent_item = next( (item for item in myClassList if item['id'] == id), None )
Run Code Online (Sandbox Code Playgroud)

该代码中的第二行给出了以下错误:

'MyClass'对象没有属性 '__getitem__'

我该怎么办?

python

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

Django Rest Framework:空的request.data

我有以下代码来查看DRF:

from rest_framework import viewsets

class MyViewSet(viewsets.ViewSet):

    def update(self, request, pk = None):
        print pk
        print request.data
Run Code Online (Sandbox Code Playgroud)

我通过以下方式通过python-requests调用URL :

import requests
payload = {"foo":"bar"}
headers = {'Content-type': 'application/json'}
r = requests.put("https://.../myPk", data= payload, headers=headers)
Run Code Online (Sandbox Code Playgroud)

但是当从服务器收到请求时,request.data为空.这里有输出:

myPk
<QueryDict: {}>
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

python django python-requests django-rest-framework

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

Django REST框架:使用def update()在ViewSet中不允许使用方法PUT

在DRF中,我有一个像这样的简单ViewSet:

class MyViewSet(viewsets.ViewSet):       

    def update(self, request):
        # do things...
        return Response(status=status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)

当我尝试PUT请求时,我得到一个错误,如方法PUT不允许.如果我使用def put(self, request):所有的东西工作正常.因此到的文档,我应该使用def update():没有def put():,为什么会发生?

python django-rest-framework

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

Django rest框架:在ModelSerializer中覆盖create(),传递一个额外的参数

我正在寻找一种方法来正确地替换Django Rest Framework .create()中的ModelSerializer序列化器的默认方法来处理额外的参数.

在我原来的Django模型中,我刚刚覆盖了.save()管理extraparam 的默认方法.现在.save()也可以用这种方式调用:.save(extra = 'foo').

我必须ModelSerializer在原始的Django模型上创建一个映射:

from OriginalModels.models import OriginalModel
from rest_framework import serializers

class OriginalModelSerializer(serializers.ModelSerializer):

    # model fields
    class Meta:
        model = OriginalModel
Run Code Online (Sandbox Code Playgroud)

但是这样我就无法将extraparam 传递给模型.save()方法.

我怎样才能正确地覆盖.create()我的OriginalModelSerializer类的方法来考虑(最终)这个extra参数?

python django overriding django-rest-framework

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

git log输出的差异--decorate :( HEAD - > master)vs(HEAD,master)

当我得到GIT仓库的日志时:

git log --oneline --decorate --graph
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

* 44025ed (HEAD -> master) second commit
* adf2dbb first commmit
Run Code Online (Sandbox Code Playgroud)

在另一个回购中,当我git log,我得到:

* 435b61d (HEAD,master) bar
* 9773e52 foo
Run Code Online (Sandbox Code Playgroud)

(HEAD -> master)和之间有什么区别(HEAD,master)

git git-log

8
推荐指数
1
解决办法
1790
查看次数

Google API批量请求会通过Python客户端为每次调用返回HttpError 404

我有一个基于google-api-python-client的小应用程序,但批处理请求已经工作了几天(错误404).

例如,以下代码在几天前工作正常.

from apiclient.http import BatchHttpRequest
from apiclient.discovery import build
import json

DEVELOPER_KEY = "foobar"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"

channelIds = ['UC2C_jShtL725hvbm1arSV9w','UC2C_jShtL725hvbm1arSV9w']

parts_list = [
"id",
"brandingSettings",
]

fields_list = [
"items/id",
"items/brandingSettings/channel",    
]

parts = ",".join(parts_list)
fields = ",".join(fields_list)

request_map = {}

def this_is_the_callback_function(request_id, response, exception):
  if exception is not None:
    # Do something with the exception
    print exception
    pass
  else:
    print request_id
    print request_map[int(request_id)]
    print json.dumps(response,sort_keys=True, indent=4)

service = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=DEVELOPER_KEY)
batch = …
Run Code Online (Sandbox Code Playgroud)

python youtube-api google-api-python-client youtube-data-api

8
推荐指数
1
解决办法
796
查看次数

如何在Chrome调试器中使用enctype =“ multipart / form-data”查看表单数据

我正在尝试在Chrome调试器中可视化表单数据。数据通过发送,文件从中加载并发送一些文本。像这样的东西:

<form action="url" enctype="multipart/form-data" method="post">
     <input type="file" name="file"> <br>
     <input type="text" name="some_text">
</form>
Run Code Online (Sandbox Code Playgroud)

如果我使用开发工具探索POST请求的标头,则看不到表单数据部分,但发现:

Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryXGBFWL5ab6g5XoFN
Run Code Online (Sandbox Code Playgroud)

根据这篇文章是一种用于分隔数据的分隔符。但是,我看不到有关提交数据的其他信息。

如何查看有关some_textChrome调试器中归档文件的实际数据。

google-chrome http-post google-chrome-devtools

8
推荐指数
3
解决办法
1221
查看次数