【发布时间】:2019-08-18 15:27:15
【问题描述】:
我有这样的看法:
def getData():
response = requests.get("https://path.to/api/")
data = response.json()
random_data = [MyModel(name=name, street=street, email=email, phone=phone) \
for name, street, email, phone, in data.items()]
MyModel.objects.bulk_create(random_data)
@require_http_methods(['GET', 'POST'])
def index(request):
datas = getData()
return render(request, 'index.html')
当我访问 index 方法的指定 url 时,它会抛出这个:
Traceback (most recent call last):
File "/home/user/.virtualenvs/myproj/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/user/.virtualenvs/myproj/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/user/.virtualenvs/myproj/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/user/.virtualenvs/myproj/lib/python3.6/site-packages/django/views/decorators/http.py", line 40, in inner
return func(request, *args, **kwargs)
File "/home/user/django_projects/myproj/myproj/user/views.py", line 29, in index
datas = getData()
File "/home/user/django_projects/myproj/myproj/user/views.py", line 18, in getData
for name, street, email, phone, in data.items()]
File "/home/user/django_projects/myproj/myproj/user/views.py", line 18, in <listcomp>
for name, street, email, phone, in data.items()]
ValueError: not enough values to unpack (expected 4, got 2)
[18/Aug/2019 15:18:05] "GET /api/index/ HTTP/1.1" 500 85435
Method Not Allowed (HEAD): /api/index/
从这个错误中,我认为来自 api 的结果 json 响应可能是问题所在,因为其中一些项目类似于 nested 到结果 json
这是一个示例响应:
有什么想法吗?
【问题讨论】:
-
你使用的是 Django 还是 django DRF?
-
Django,api 装饰器是标准的 Django 的
-
我认为 requests.get("path.to/api/") 这个请求没有在列表理解中获得所需的值,检查您的模型对象是否已保存?
-
我可以想象,但我该怎么做呢?我的意思是,它可能是因为生成的 json,其中一些项目是嵌套的,所以,我猜想,有一个链接与来自原始 url 的示例的链接
-
确实必须在嵌套响应中找到值,不能像这样直接解压json对象,可能需要连接一些值,例如名称