django - POST 正文未与 APIClient DRF 一起发送
问题描述
我对 Django 还很陌生,并且有扎实的背景Laravel
(如果你碰巧做了一个很棒的类比)
我正在尝试将身体传递到终点,但我无法做到。
我试过了:
fake = Faker('pt_PT')
fake.add_provider(company)
client = APIClient()
class CompanyPostTestCase(APITestCase):
def setUp(self):
self.email = fake.email()
self.username = str(fake.company()).split()[0]
self.valid_payload = {
'email': self.email,
'password': '123',
'username': self.username
}
def test_company_was_created(self):
response = self.client.post('/v1/company/',
self.valid_payload,
# Also tried with content_type='application/json'
format='json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
但是在调试模式下执行时,response
对象POST
内部_closable_objects
有QueryDict: {}
我假设没有body
指定。错误消息还说b'{"message":"You must provide a password"}'
清楚地表明没有传递正文。
通过 Postman,我可以提出相同的请求并Company
毫无问题地创建一个。
任何想法都可以解决这样的问题。
编辑
我也试过valid_payload
直接传递给client.post()
这样的:
response = client.post('/v1/company/', data={
'email': self.email,
'password': '123',
'username': self.username
},
format='json')
之后仍然无法工作
解决方案
客户端不是CompanyPostTestCase
可能导致问题的一部分。初始化内部函数应该可以解决问题。
class CompanyPostTestCase(APITestCase):
def setUp(self):
self.email = fake.email()
self.username = str(fake.company()).split()[0]
self.valid_payload = {
'email': self.email,
'password': '123',
'username': self.username
}
def test_company_was_created(self):
client = APIClient()
response = client.post('/v1/company/',
self.valid_payload,
format='json')
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
推荐阅读
- delphi - Stacked and normal Bar Series on single Chart in Delphi
- authorize.net - Authorize.Net 中的付款问题 - E00027“信用卡收费:无效响应”
- c++ - 如何在另一个线程中关闭 MFC 模态对话框并获取对话框返回值?
- php - 在 WooCommerce 电子邮件上查找/编辑订单详细信息元文本
- c# - ExecuteNonQuery 是等待触发器完成还是在插入/更新完成后完成?
- javascript - 在 Angular 中按顺序运行组件
- html - 换行后将 p 宽度调整为文本
- ios - 验证 JWT 令牌签名
- python - 如何在pycharm终端中自动打开url(不是点击打开)http://127.0.0.1:8000 python manage.py runserver
- aws-lambda - API 网关上的 API 密钥与斜杠命令一起使用