如何在 Django 中设置 AJAX 调用的视图/路径?

Posted

技术标签:

【中文标题】如何在 Django 中设置 AJAX 调用的视图/路径?【英文标题】:How do I set up a view/path to an AJAX call in Django? 【发布时间】:2019-09-07 02:36:41 【问题描述】:

我正在使用 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 调用的正确方法是什么?

【问题讨论】:

【参考方案1】:

尝试将您的 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'),
]

【讨论】:

【参考方案2】:

通常calculate_taxes会在web/views.py中定义,那么它可以简单地称为calculate_taxes。

【讨论】:

【参考方案3】:

__init__.py 文件中的web/views 目录中,您必须像这样导入tax_calculator.py

# __init__.py
from . import tax_calculator

如果您没有 __init__.py 文件,则必须创建它。

【讨论】:

以上是关于如何在 Django 中设置 AJAX 调用的视图/路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中设置 Django-Select2 小部件的初始值

使用 json 在 python / django 中设置用户登录,但不知道从哪里开始

如何在 Django 中设置自定义中间件

直接在视图Django中设置字段外键值

如何在 Django 模板中的“带有模板标签”中设置 Django 渲染块值?

在 .NET Core Razor 页面和 AJAX 中设置部分页面(视图)搜索路径