Определил ajax-функцию в моем файле urls.py, но получил 404 при вызове в тесте - PullRequest
0 голосов
/ 18 апреля 2019

Я использую Django и Python 3.7.У меня есть это в моем файле urls.py

urlpatterns = [
    path(r'^ajax/calculate_taxes/$', post, name='calculate_taxes'), 
]

Однако я получаю 404, когда пытаюсь вызвать логику в моем классе test_views.py ...

# 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)

Представление содержит простую функцию публикации

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 в моем тесте?

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

Вы использовали регулярное выражение в вызове path; буквально интерпретирует символы ^ и $. Это должно быть просто:

path('ajax/calculate_taxes/', post, name='calculate_taxes'), 
0 голосов
/ 18 апреля 2019

Вы должны вернуть JsonResponse

return JsonResponse(data)
...