当前位置: 首页 > 面试题库 >

从Django格式AJAX获取POST数据

叶琦
2023-03-14
问题内容

我将在Django中从AJAX请求中获取参数,这是我正在做的事情:

base.html:

<form method="POST">{% csrf_token %}
First name: <input type="text">
<input type="submit" value="Register" id="register">
</form>

main.js:

$(document).ready(function(){
    $("#register").live("click", function(e){
        $.post("/", {
            name: "MY TEXT",
        });
    });
});

views.py:

from django.shortcuts import render_to_response
from django.template import RequestContext
from django.core.context_processors import csrf

def home(request):
    if request.method == 'POST':
        print request.POST['name']
    return render_to_response('registration.html', {},
    context_instance=RequestContext(request))

是的,我知道目前我的JS无法从文本形式获取真实数据,它仅发送静态文本“ MY TEXT”。但是当我按下按钮时,出现
MultiValueDictKeyError at /在“”中找不到“键’name’”

我做错了什么?

我更改了代码:main.js

$(document).ready(function(){
    $("#register").live("click", function(e){
        e.preventDefault();
        $.post("/", {
           name:'MY TEXT'
        });
    });
});

base.html:

<form method="POST">{% csrf_token %}
    First name: <input type="text" name="name">
    <br>
    <input type="submit" value="Register" id="register">
</form>

它有效 ,谢谢!

虽然,我有两个问题:

  1. 在这种情况下,我应该在哪里发送“我的文字”?我注意到它从名称字段返回了ACTUAL数据,并且没有返回“ MY TEXT”
  2. 该页面仍在重新加载。我想完全使用AJAX。我的意思是创建一个python函数,将POST请求中的数据添加到MySQL数据库,然后将操作结果返回给AJAX-script。一切都无需重新加载页面。我怎样才能做到这一点?

问题答案:

发生的事情是您没有阻止浏览器的默认submit操作发生。因此,您的Ajax POST完成了,但是浏览器本身立即进行了POST-
并且,正如Michal所指出的,您的表单不包含name字段,因此查找失败。

您需要做两件事来解决此问题。首先,e.preventDefault();在您的JS
click方法中使用。其次,request.is_ajax()在视图顶部检查。



 类似资料:
  • 问题内容: 我有以下django模板(将http:// IP / admin / start /分配给一个名为view的假设视图): 是视图中引用的Django模型的。每当单击“开始”提交输入时,我都希望“开始”视图在返回渲染页面之前使用函数中的数据。如何将POST(在本例中为隐藏输入)中发布的信息收集到Python变量中? 问题答案: 另外,你的隐藏字段还需要一个可靠的名称,然后是一个值: 然后

  • 本文向大家介绍django中使用POST方法获取POST数据,包括了django中使用POST方法获取POST数据的使用技巧和注意事项,需要的朋友参考一下 在django中获取post数据,首先要规定post发送的数据类型是什么。 1.获取POST中表单键值数据 如果要在django的POST方法中获取表单数据,则在客户端使用JavaScript发送POST数据前,定义post请求头中的请求数据类

  • 如何使用方法将数据检索到数据库中,我创建了一个从外部服务api检索数据的方法-可以显示该方法,但我在创建将检索到的数据发送到数据库的适当方法时遇到了问题。 方法从外部api检索数据: 我准备了一个存储库和一个实体来创建一个数据库(创建了数据库,但没有填充数据) 我目前创建了一个POST方法,但它不允许检索和保存数据(逻辑不好?)。 DTO型号: 允许您保存数据的服务。 因此,我有一个问题,就是如何

  • 问题内容: 我的页面如下: 和一个php文件来处理ajax请求; 但是,当我单击时,我得到的不是array [0]。我怎样才能解决这个问题?? 提前致谢… 问题答案: 您不能从js访问数组(php数组)try 和js

  • 问题内容: 是否可以在表单类中获取request.user数据?我想清理一个电子邮件地址以确保它是唯一的,但是如果它是当前用户的电子邮件地址,则它应该通过。 这是我目前拥有的东西,非常适合创建新用户,但是如果我要编辑用户,则会遇到他们的电子邮件无法验证的问题,因为它已经被采用。如果我可以使用request.user.email检查这是他们的电子邮件,则可以解决我的问题,但是我不确定该怎么做。 问题

  • 问题内容: 我正在尝试使用fetch发布 JSON对象。 据我了解,我需要将一个字符串化的对象附加到请求的主体,例如: 当使用jsfiddle的json回显时,我希望看到返回的对象(),但这不会发生-chrome devtools甚至不会在请求中显示JSON,这意味着它没有被发送。 问题答案: 借助ES2017 支持,这是如何实现JSON负载的方法: 但是,问题是由 很久以来修复的chrome b