【发布时间】: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