Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以在同一请求中为用户在Django和HTML之间传递信息吗?_Javascript_Python_Html_Django - Fatal编程技术网

Javascript 我可以在同一请求中为用户在Django和HTML之间传递信息吗?

Javascript 我可以在同一请求中为用户在Django和HTML之间传递信息吗?,javascript,python,html,django,Javascript,Python,Html,Django,我正在创建某个模型的对象选择器,当用户通过HTML表单发送post请求时,该选择器将被激活。更具体地说,一旦用户单击某个submit按钮并将post请求发送到网站,它就会返回变量,然后javascript使用该变量打开一个状态窗口 以下是与这些操作相关的所有代码: HTML <form id="item_selection1" action="{% url 'Home:AccountPage' %}" method="post"> {% csrf_token %} &

我正在创建某个模型的对象选择器,当用户通过HTML表单发送post请求时,该选择器将被激活。更具体地说,一旦用户单击某个submit按钮并将post请求发送到网站,它就会返回变量,然后javascript使用该变量打开一个状态窗口

以下是与这些操作相关的所有代码:

HTML

<form id="item_selection1" action="{% url 'Home:AccountPage' %}" method="post">
    {% csrf_token %}
    <input class="sendtrade" name="sendtrade1" type="submit" value="Send Offer">
</form>
if ( "{{ prepareTrade1 }}" == "true" ) {
    $(".process_overlay").css("display", "block")
}
HTML中的Javascript

<form id="item_selection1" action="{% url 'Home:AccountPage' %}" method="post">
    {% csrf_token %}
    <input class="sendtrade" name="sendtrade1" type="submit" value="Send Offer">
</form>
if ( "{{ prepareTrade1 }}" == "true" ) {
    $(".process_overlay").css("display", "block")
}
很快,当用户单击“提交”按钮框时,我要做的是显示对象查询的状态

例如,如果我从
test.py
接收到ObjectDoesNotExister错误,它与
views.py
属于同一目录,我如何将该信息定向到用户正在接收的HTML/Javascript?如果需要创建一个绝对新的请求,那么我该怎么做呢?我是否需要使用Ajax请求


因此,简而言之,当呈现template
name.html
时,应该异步执行脚本
name.py
,该脚本与
views.py
属于同一目录,让我们举一个例子,在
name.py
中引发ObjectDoesNotExist异常,我如何将其传递给template?我认为这个过程被称为XHR。

创建一个单独的函数来检查prepareTrade1的值,这个函数将被前端用来显示窗口。使用csrf豁免只是为了简化示例

@csrf_exempt 
def check_trade(request):
    if request.POST.get('sendtrade1'):
        prepareTrade1 = "true"
        return HttpResponse(json.dumps({"prepareTrade": "true"}))
    else:
        return HttpResponse(json.dumps({"prepareTrade": "false"}))
现在,使用jquery处理ajax请求

    $.ajax({
        dataType: 'json',
        type: "POST",
        url: URL,
        data: {"sendtrade1": "somevalue"},
        success: function (response) {
          response = JSON.parse(response)
          // now time for the logic you mentioned
          if ( response.prepareTrade == "true" ) {
               $(".process_overlay").css("display", "block")
          }
        }
    });
一些可能对您有所帮助的链接:


您应该使用ajax请求从服务器更新变量

这是你的表格


{%csrf_令牌%}

您是在使用Ajax请求,还是在中渲染模板和jsit@ArpitSolanki不,我只是在呈现代码中看到的模板,这种情况下是否需要ajax请求?只需删除“{prepareTrade1}”中的引号,就可以了。这是可行的。@Arpitolanki下面的代码功能齐全,即使在引号中,我试图做的是制作实景模板渲染,因此,例如,一旦用户看到模板
name.html
,脚本
test.py
就会被执行,它应该将其状态作为变量指向该用户
name.html
,这可能吗?在js中使用Ajax请求并从Django视图发送json响应,所以我应该将脚本作为请求函数添加到views.py中?那么,我如何才能将这些数据发送给其他显示用户信息的请求呢?jQuery代码将转到html模板中的脚本标记,然后check_trade函数将转到views.py抱歉,我对Ajax没有经验,所以我不太懂,所以如果我使用这段代码,如果用户提交按钮,请求功能和我的脚本都应该执行,对吗?然后,如果我收到ObjectDoesNotExist异常,我怎么能在请求视图中显示它呢?这个例子只解释了如何发出Ajax请求。如果要将类似于侦听器的处理程序附加到按钮单击或提交按钮,则可以使用$('idofsubmitbutton')。on('click',function())。然后在回调中提供的函数中编写Ajax逻辑也可以查看其他答案以获得更多澄清您好,感谢您的回答,但例如,我有script
name.py
,单击按钮时将执行该脚本,例如,我从脚本中获得异常,请求已加载,如何使用以下异常更新该请求?是否要将异常消息传递给客户端?这样,您只需在json响应中传递两个变量:status和message。并且取决于状态成功函数将显示阻塞或异常消息。首先,在您的视图中,您可以通过并行执行调用函数并设置等待时间限制,并根据函数是否结束(成功消息)返回答案(异常消息)。您还可以设置ajax功能的超时限制,而无需更改服务器端架构。这样,ajax必须有两个回调才能成功和出错。这是您所需要的吗?如果您不使用ajax,每次都会重新加载页面。使用ajax是实现您想要的最简单的方法。您可以在服务器端执行并行执行以获取异常消息,但不应以任何其他方式传输信息。这是非常不安全的。您还可以使用interecooler库,这使得ajax非常简单。看