【问题标题】:Django API is throwing error r("Expecting value", s, err.value)Django API 抛出错误 r("Expecting value", s, err.value)
【发布时间】:2020-08-02 20:18:49
【问题描述】:

我为 RESTful 服务创建了 API。但它抛出错误 raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError:预期值:第 1 行第 1 列(字符 0)

API url 为 path('api/(?P\d+)/$',views.EmployeeDetailsCBV.as_view()),

view 是 EmployeeDetailsCBV(View) 类: def get(self,request,id,*args,**kwargs): emp = Employee.objects.get(id=id) emp_data = { 'eno':emp.eno, 'ename':emp.ename, 'esal':emp.esal, 'eaddr':emp.eaddr, } json_data = json.dumps(emp_data) 返回 HttpResponse(json_data,content_type='application/json')

【问题讨论】:

  • 尝试打印 emp.eno 和 emp.ename 可能缺少值。
  • @PavanKumarTS 如果我尝试手动传递值那么它工作正常但是当我试图从用户那里获取 empo id 时它会抛出错误。
  • 您获取的 Employee 是否具有所有值。为您正在获取的 id 签入一次 db
  • 是的,emp id 是有价值的。我认为我定义的 url 路径存在问题。 path('api/(?P\d+)/$', views.EmployeeDetailsCBV.as_view()), 你能确认 /(?P\d+)/$' 是正确的@PavanKumarTS跨度>
  • 请格式化您的代码。

标签: python django python-3.x django-models django-rest-framework


【解决方案1】:

如果您使用的是 django 2.*,则需要使用以下模式

path('api/<int:id>/', views.EmployeeDetailsCBV.as_view(),name='api')

如果你喜欢使用 re_path,你可以使用与使用相同的方式

re_path('api/(?P<id>\d+)/$', views.EmployeeDetailsCBV.as_view()),

【讨论】:

    猜你喜欢
    • 2017-05-11
    • 2022-06-11
    • 2020-09-05
    • 2021-09-29
    • 2019-08-06
    • 2020-04-19
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多