【问题标题】:Send data with POST-request wont work in Django with AJAX使用 POST 请求发送数据在使用 AJAX 的 Django 中不起作用
【发布时间】:2021-10-18 08:27:27
【问题描述】:

首先:我知道,网上有一些解决方案,但它们对我不起作用(因为它们使用例如 Jason 或只是过时的)

我在 Django 中从事一个项目,并希望将 ajax 用于一项任务:

我想在 ajax 处理后将数据从我的模板文件传递到我的视图文件(使用 POST 请求),以再次使其在我的模板文件中可见。

模板文件 --> 已处理的数据 --> POST-request --> views.py --> 模板文件

但它对我不起作用。

我的 HTML 模板文件

...

<script type="text/javascript">

    var csrftoken = jQuery("[name=csrfmiddlewaretoken]").val();

    function csrfSafeMethod(method) {
        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
    }

    $.ajaxSetup({
        beforeSend: function (xhr, settings) {
            if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                xhr.setRequestHeader("X-CSRFToken", csrftoken);
            }
        }
    });

    $.ajax({
        url: "/save",
        data: {
            'value': inputDataArray  //I have already defined "inputDataArray" before
        },
        success: function (res, status) {
            alert(res);
            alert(status);
        },
        error: function (res) {
            alert(res.status);                                                                                                                          
        }
    });
</script>

我的 views.py 文件:

def save(request):
    if request.method == 'POST':
        request_getdata = request.POST.get("value", None) 
    return render(request, "response.html", {"data":request_getdata})     

urls.py 文件:

urlpatterns = [
    path('', views.index , name='index'),
    path('save', views.save , name='save'),]

所以我尝试将其显示在“response.html”...

{{data}}

...但它只会重新加载当前页面并且不会将任何数据传递给 response.html 文件。

有人知道我的错误是什么吗?

提前非常感谢

P.S.:这是我的项目结构:


│   db.sqlite3
│   manage.py
│
├───myapp
│   │   admin.py
│   │   apps.py
│   │   models.py
│   │   tests.py
│   │   urls.py
│   │   views.py
│   │   __init__.py
│   │
│   ├───migrations
│   │       __init__.py
│   │
│   └───__pycache__
│           urls.cpython-39.pyc
│           views.cpython-39.pyc
│           __init__.cpython-39.pyc
│
├───static
│   └───myapp
│       └───css
│               index.css
│
├───templates
│       index.html
│       result.html
│
└───myapp
    │   asgi.py
    │   settings.py
    │   urls.py
    │   wsgi.py
    │   __init__.py
    │
    └───__pycache__
        ...

【问题讨论】:

  • 请添加url文件
  • 尝试更改:views.save 到 app.views.save
  • 如果不行,请分享项目结构

标签: python html python-3.x django ajax


【解决方案1】:

而不是

urlpatterns = [
    path('', views.index , name='index'),
    path('save', views.save , name='save'),]

试试:

  urlpatterns = [
        path('', myapp.views.index , name='index'),
        path('save',myapp.views.save , name='save')

【讨论】:

  • 谢谢,但还是不行。网址在我正确重定向之前起作用。所以我认为错误必须在views.py或ajax代码中
  • 当你设置一个断点时你会进入函数?
  • 抱歉,“断点”是什么意思?
  • 当你调试你的代码时,你可以设置断点以了解你的代码失败的地方
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 2011-05-22
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 2013-05-15
相关资源
最近更新 更多