Javascript 我可以在同一请求中为用户在Django和HTML之间传递信息吗?
我正在创建某个模型的对象选择器,当用户通过HTML表单发送post请求时,该选择器将被激活。更具体地说,一旦用户单击某个submit按钮并将post请求发送到网站,它就会返回变量,然后javascript使用该变量打开一个状态窗口 以下是与这些操作相关的所有代码: HTMLJavascript 我可以在同一请求中为用户在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 %} &
<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逻辑也可以查看其他答案以获得更多澄清您好,感谢您的回答,但例如,我有scriptname.py
,单击按钮时将执行该脚本,例如,我从脚本中获得异常,请求已加载,如何使用以下异常更新该请求?是否要将异常消息传递给客户端?这样,您只需在json响应中传递两个变量:status和message。并且取决于状态成功函数将显示阻塞或异常消息。首先,在您的视图中,您可以通过并行执行调用函数并设置等待时间限制,并根据函数是否结束(成功消息)返回答案(异常消息)。您还可以设置ajax功能的超时限制,而无需更改服务器端架构。这样,ajax必须有两个回调才能成功和出错。这是您所需要的吗?如果您不使用ajax,每次都会重新加载页面。使用ajax是实现您想要的最简单的方法。您可以在服务器端执行并行执行以获取异常消息,但不应以任何其他方式传输信息。这是非常不安全的。您还可以使用interecooler库,这使得ajax非常简单。看