在我的 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'),