Python 测试通过Ajax视图提交的Django表单
我正在尝试测试Ajax使用的视图。当服务器(手动测试)一切正常时,当我运行单元测试时,出现了一个无法解释的错误 如果您看一下下面几行,我将尽可能简化我的代码,您将看到,尽管我向json dict添加了一个名为某物的变量(就像我在ajax中所做的那样),但表单中似乎缺少该字段 我的测试(Python 测试通过Ajax视图提交的Django表单,python,json,django,Python,Json,Django,我正在尝试测试Ajax使用的视图。当服务器(手动测试)一切正常时,当我运行单元测试时,出现了一个无法解释的错误 如果您看一下下面几行,我将尽可能简化我的代码,您将看到,尽管我向json dict添加了一个名为某物的变量(就像我在ajax中所做的那样),但表单中似乎缺少该字段 我的测试(tests.py): 当我的Ajax视图工作时,我的测试提供了以下回溯: b'{"something": ["This field is mandatory."]}' Failure Traceback (mos
tests.py
):
当我的Ajax视图工作时,我的测试提供了以下回溯:
b'{"something": ["This field is mandatory."]}'
Failure
Traceback (most recent call last):
File "***\tests.py", line 81, in ***
self.assertEqual(response.status_code, 200)
AssertionError: 400 != 200
我在考试中做错了什么
代码的其余部分:
我的视图(views.py
):
我的JS(something.JS
):
和代码来处理响应我希望我能得到一个更好的解决方案,但现在,我的解决方案是删除
内容类型
并发布一本字典
在tests.py
中,var响应的代码为:
response = self.client.post(reverse('edit_something'), data)
这使视图接收适当的值,而当我添加content\u type='application/json'
时,视图request.POST
为空
def edit_something(request):
if request.method == 'POST':
form = CustomForm(request.POST)
if form.is_valid():
form.save()
response_code = 200
response_data = {'something':'updated')
else:
response_code = 400
response_data = form.errors
return JsonResponse(
response_data,
status=response_code,
)
$.ajax({
url : form_endpoint, // the endpoint
type : "POST", // http method
data : {
something: 'data',
},// data sent with the post request
response = self.client.post(reverse('edit_something'), data)