我有一个像这样的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 的 Docker 教程(例如:this one)中,他们使用该选项PYTHONDONTWRITEBYTECODE是为了让 Python 避免在导入源模块时编写 .pyc 文件(这相当于指定了 -B 选项)。
设置此选项有哪些风险和优势?
我正在研究这个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 管理的本地版本的开发包,并且我还想“按原样”利用预提交框架,而不需要切换到 …
我有一个像这样的课:
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__'
我该怎么办?
我有以下代码来查看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)
我该如何解决这个问题?
在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():,为什么会发生?
我正在寻找一种方法来正确地替换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参数?
当我得到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)
我有一个基于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
我正在尝试在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调试器中归档文件的实际数据。
python ×8
django ×3
docker ×1
git ×1
git-log ×1
http-post ×1
overriding ×1
python-3.x ×1
youtube-api ×1