Как мне настроить представление / путь к вызову AJAX в Django? - PullRequest
0 голосов
/ 17 апреля 2019

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

web/views/tax_calculator.py

, которая состоит из одной функции (я пропускаю импорт) ...

def calculate_taxes(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),
    }
    return JsonResponse(data)

В моем файле ./myproject/urls.py у меня есть

from django.contrib import admin
from django.urls import path
from web.views import *

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

но это приводит к ошибке

    path(r'^ajax/calculate_taxes/$', tax_calculator.calculate_taxes, name='calculate_taxes'),
NameError: name 'tax_calculator' is not defined

Как правильно ссылаться на мой взгляд / вызов AJAX?

Ответы [ 3 ]

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

Внутри вашей директории web/views в файле __init__.py вы должны импортировать tax_calculator.py следующим образом:

# __init__.py
from . import tax_calculator

Если у вас нет файла __init__.py, его нужно создать.

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

Попробуйте изменить код urls.py на код ниже

from django.contrib import admin
from django.urls import path
from web.views.tax_calculator import calculate_taxes

urlpatterns = [
    path(r'^ajax/calculate_taxes/$', calculate_taxes, name='calculate_taxes'),
]
0 голосов
/ 17 апреля 2019

Обычно Calculate_taxes определяется в файле web / views.py, а затем его можно просто называть Calculate_taxes.

...