我有以下代码
function OpenModal()
{
var fname="Quartz";
var mname="Rohit";
var lname="Patel";
var url="{% url 'display_modal' %}"+fname +"/"+mname+"/"+lname;
alert(url);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById('divcontent').innerHTML=this.responseText;
}
};
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
如何在django templating language.url中点击按钮时执行上面的代码是这样的。
path('member/search/',
views.displayModalView, name="display_modal"),
ajax的作用是防止页面重载,这就是ajax的神奇之处。所以,如果你提供的是 "+mname+"+lname; alert(url); xmlhttp = new ... path
,这可以用于页面重载。
Html.Urls.py:什么?
<script>
function OpenModal(){
var fname="Quartz";
var mname="Rohit";
var lname="Patel";
$.ajax({
type:'POST',
url: "{% url 'display_modal' %}",
data: { csrfmiddlewaretoken: '{{ csrf_token }}'},
success: function(param123){
dict1 = JSON.parse(param123);
let data1 = dict1.test;
alert("Successful call do what ever you want");
alert(data1);
},
error: function(){
alert("sorry");
}
});
}
</script>
urls.py:what url
它将与你提到的url.the的regex匹配。name='display_modal'
参数和 url: "{% url 'display_modal' %}"
你在ajax调用中提到的也是一样。
from django.conf.urls import url
urlpatterns = [
url(r'^display_modal', views.displayModalView, name='display_modal')
]
在views.py中,你可以使用一个jQuery的Ajax请求。
import json
from django.http import HttpResponse
def displayModalView(request):
#do what ever you want but at the end return Httpresponse with dictionary if you want
to use dictionary in your ajax call.
param123 = {'test': "Hello_world"}
return HttpResponse(json.dumps(param123))
我认为你可以在正常的click()方法中使用jQuery Ajax请求,就像这里描述的那样。W3C文档
然而,在这种情况下,我认为你必须将url声明为 TemplateAsView因此,你可以告诉Django立即返回一个模板,而不是执行一个Django视图,如在 文档. 在模板中,你可以按照你的意愿执行函数,例如在模板中,你可以在文档准备好时插入对你的函数的调用,并在DOM加载时执行,如上所述。此处.
要做到这一点,你必须改变网址,因为一个 view.someView 在做了搜索,在你的 视图.py, SomeView函数声明但你的函数是一个Javascript,所以,我猜测,你把它放在模板代码里面。
我看到你的代码是一个Javascript函数,所以我试着想,为什么你要用Django模板系统调用这样的函数,作为模板调用,而不能直接调用函数。我认为,按照你的想法去做,你每次都会强制重载DOM,而且,我认为,有几种方法可以在不刷新页面的情况下打开modal。
你可以在你的按钮上添加onclick,其值应该等于你的函数,像这样。
<button onclick='show()' something else ... ></button>
function show(){
something else ...
}
你也可以看到jquery 文件