在我的 urls.py 文件中定义了一个 ajax 函数,但在测试中调用它时得到 404
Defined an ajax function in my urls.py file, but getting a 404 when invoking it in a test
我正在使用 Django 和 Python 3.7。我的 urls.py 文件中有这个
urlpatterns = [
path(r'^ajax/calculate_taxes/$', post, name='calculate_taxes'),
]
但是,当我尝试在我的 test_views.py class ...
中调用逻辑时,我得到了 404
# Basic test to verify we can get valid return data
def test_calculate_tax(self):
state = 'MN'
gross = 100000
salary = 75000
json_data = json.dumps({'state': state,
'gross': gross,
'salary': salary})
response = self.client.post('/ajax/calculate_taxes/', json_data,
content_type='application/json',
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
self.assertEqual(response.status_code, 302) # this is OK.
print(response.content)
self.assertEqual(response.content, 2)
该视图包含一个简单的 post 函数
def post(request):
state = request.GET.get('state', None)
gross_income = request.GET.get('gross', None)
owner_salary = request.GET.get('salary', None)
data = {
'sole_pr_taxes': TaxCalculatorService.calc_sole_pr_taxes(state, gross_income),
's_corp_taxes': TaxCalculatorService.calc_s_corp_taxes(state, gross_income, owner_salary),
}
我做错了什么导致我的测试出现 404?
你必须return一个JsonResponse
return JsonResponse(data)
您在 path
调用中使用了正则表达式;它按字面解释 ^
和 $
字符。它应该只是:
path('ajax/calculate_taxes/', post, name='calculate_taxes'),
我正在使用 Django 和 Python 3.7。我的 urls.py 文件中有这个
urlpatterns = [
path(r'^ajax/calculate_taxes/$', post, name='calculate_taxes'),
]
但是,当我尝试在我的 test_views.py class ...
中调用逻辑时,我得到了 404# Basic test to verify we can get valid return data
def test_calculate_tax(self):
state = 'MN'
gross = 100000
salary = 75000
json_data = json.dumps({'state': state,
'gross': gross,
'salary': salary})
response = self.client.post('/ajax/calculate_taxes/', json_data,
content_type='application/json',
HTTP_X_REQUESTED_WITH='XMLHttpRequest')
self.assertEqual(response.status_code, 302) # this is OK.
print(response.content)
self.assertEqual(response.content, 2)
该视图包含一个简单的 post 函数
def post(request):
state = request.GET.get('state', None)
gross_income = request.GET.get('gross', None)
owner_salary = request.GET.get('salary', None)
data = {
'sole_pr_taxes': TaxCalculatorService.calc_sole_pr_taxes(state, gross_income),
's_corp_taxes': TaxCalculatorService.calc_s_corp_taxes(state, gross_income, owner_salary),
}
我做错了什么导致我的测试出现 404?
你必须return一个JsonResponse
return JsonResponse(data)
您在 path
调用中使用了正则表达式;它按字面解释 ^
和 $
字符。它应该只是:
path('ajax/calculate_taxes/', post, name='calculate_taxes'),