Python Django和Ajax
我正在尝试用Django开发一个包含AJAX的基本应用程序。 应用程序将获取域名,然后将其发送到服务器,服务器将对其进行dns查找,然后通过AJAX将响应发送回客户端 视图Python Django和Ajax,python,ajax,django,Python,Ajax,Django,我正在尝试用Django开发一个包含AJAX的基本应用程序。 应用程序将获取域名,然后将其发送到服务器,服务器将对其进行dns查找,然后通过AJAX将响应发送回客户端 视图 from django.http import * from django.shortcuts import render_to_response from django.template import RequestContext import sys import os import socket def main(
from django.http import *
from django.shortcuts import render_to_response
from django.template import RequestContext
import sys
import os
import socket
def main(request):
if request.method == 'POST':
dig_input = request.POST['digInput']
digoutput = socket.gethostbyname(dig_input)
return render_to_response('digajax.html', {'response': digoutput}, context_instance=RequestContext(request))
else:
return render_to_response('digajax.html', context_instance=RequestContext(request))
url(r'^digajax$', 'digajax.views.main'),
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.js'></script>
<script type="text/javascript">
function send_request(){
$.get(location.href, function(data){
$("#output").html(data.output);
});
}
</head>
<body>
<form method="post" name="diginput form" action="/digajax">
{% csrf_token %}
<input name="digInput" id="digInput" type="text">
<input type="button" onclick="send_request();" value="Request this page with AJAX">lookup</input>
</form>
{% if response %}
<div id="output">
<p>{{ response|linebreaksbr }}</p>
</div>
{% else %}
<p>no</p>
{% endif %}
</body}
</html>
URL
from django.http import *
from django.shortcuts import render_to_response
from django.template import RequestContext
import sys
import os
import socket
def main(request):
if request.method == 'POST':
dig_input = request.POST['digInput']
digoutput = socket.gethostbyname(dig_input)
return render_to_response('digajax.html', {'response': digoutput}, context_instance=RequestContext(request))
else:
return render_to_response('digajax.html', context_instance=RequestContext(request))
url(r'^digajax$', 'digajax.views.main'),
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.js'></script>
<script type="text/javascript">
function send_request(){
$.get(location.href, function(data){
$("#output").html(data.output);
});
}
</head>
<body>
<form method="post" name="diginput form" action="/digajax">
{% csrf_token %}
<input name="digInput" id="digInput" type="text">
<input type="button" onclick="send_request();" value="Request this page with AJAX">lookup</input>
</form>
{% if response %}
<div id="output">
<p>{{ response|linebreaksbr }}</p>
</div>
{% else %}
<p>no</p>
{% endif %}
</body}
</html>
模板
from django.http import *
from django.shortcuts import render_to_response
from django.template import RequestContext
import sys
import os
import socket
def main(request):
if request.method == 'POST':
dig_input = request.POST['digInput']
digoutput = socket.gethostbyname(dig_input)
return render_to_response('digajax.html', {'response': digoutput}, context_instance=RequestContext(request))
else:
return render_to_response('digajax.html', context_instance=RequestContext(request))
url(r'^digajax$', 'digajax.views.main'),
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.js'></script>
<script type="text/javascript">
function send_request(){
$.get(location.href, function(data){
$("#output").html(data.output);
});
}
</head>
<body>
<form method="post" name="diginput form" action="/digajax">
{% csrf_token %}
<input name="digInput" id="digInput" type="text">
<input type="button" onclick="send_request();" value="Request this page with AJAX">lookup</input>
</form>
{% if response %}
<div id="output">
<p>{{ response|linebreaksbr }}</p>
</div>
{% else %}
<p>no</p>
{% endif %}
</body}
</html>
函数send_request(){
$.get(location.href,函数(数据){
$(“#output”).html(data.output);
});
}
{%csrf_令牌%}
查找
{%if响应%}
{{响应| linebreaksbr}}
{%else%}
没有
{%endif%}
Django提供了一个方法,用于传递视图时的请求
对象,该方法将告诉您该请求是否是通过XmlHttp
,request.is_ajax()
发出的
如果该方法返回true,则可能只返回要更新的页面的片段,而不是整个页面
如果该方法返回false,您可能希望返回整个页面,因为用户关闭了JavaScript,或者出现了导致正常请求视图的某种类型的错误
因此,您的视图应该如下所示:
def main(request):
if request.method == 'POST':
dig_input = request.POST['digInput']
digoutput = socket.gethostbyname(dig_input)
if request.is_ajax():
return HttpResponse("<p>%s</p>" % digoutput)
else:
return render(request, 'digajax.html', {
'response': digoutput
})
else:
return render(request, 'digajax.html')
<script type="text/javascript">
function send_request(){
$.get(location.href, function(data){
$("#output").html(data);
});
}
</script>
def main(请求):
如果request.method==“POST”:
dig_input=request.POST['digInput']
digoutput=socket.gethostbyname(dig\u输入)
if request.is_ajax():
返回HttpResponse(“%s%digoutput”)
其他:
返回render(请求'digajax.html'{
“响应”:digoutput
})
其他:
返回呈现(请求'digajax.html')
您的JavaScript代码应该如下所示:
def main(request):
if request.method == 'POST':
dig_input = request.POST['digInput']
digoutput = socket.gethostbyname(dig_input)
if request.is_ajax():
return HttpResponse("<p>%s</p>" % digoutput)
else:
return render(request, 'digajax.html', {
'response': digoutput
})
else:
return render(request, 'digajax.html')
<script type="text/javascript">
function send_request(){
$.get(location.href, function(data){
$("#output").html(data);
});
}
</script>
函数send_request(){
$.get(location.href,函数(数据){
$(“#输出”).html(数据);
});
}
Django提供了一个方法,用于传递视图时的请求
对象,该方法将告诉您该请求是否是通过XmlHttp
,request.is_ajax()
发出的
如果该方法返回true,则可能只返回要更新的页面的片段,而不是整个页面
如果该方法返回false,您可能希望返回整个页面,因为用户关闭了JavaScript,或者出现了导致正常请求视图的某种类型的错误
因此,您的视图应该如下所示:
def main(request):
if request.method == 'POST':
dig_input = request.POST['digInput']
digoutput = socket.gethostbyname(dig_input)
if request.is_ajax():
return HttpResponse("<p>%s</p>" % digoutput)
else:
return render(request, 'digajax.html', {
'response': digoutput
})
else:
return render(request, 'digajax.html')
<script type="text/javascript">
function send_request(){
$.get(location.href, function(data){
$("#output").html(data);
});
}
</script>
def main(请求):
如果request.method==“POST”:
dig_input=request.POST['digInput']
digoutput=socket.gethostbyname(dig\u输入)
if request.is_ajax():
返回HttpResponse(“%s%digoutput”)
其他:
返回render(请求'digajax.html'{
“响应”:digoutput
})
其他:
返回呈现(请求'digajax.html')
您的JavaScript代码应该如下所示:
def main(request):
if request.method == 'POST':
dig_input = request.POST['digInput']
digoutput = socket.gethostbyname(dig_input)
if request.is_ajax():
return HttpResponse("<p>%s</p>" % digoutput)
else:
return render(request, 'digajax.html', {
'response': digoutput
})
else:
return render(request, 'digajax.html')
<script type="text/javascript">
function send_request(){
$.get(location.href, function(data){
$("#output").html(data);
});
}
</script>
函数send_request(){
$.get(location.href,函数(数据){
$(“#输出”).html(数据);
});
}
我试过你的建议,但似乎不管用。http请求是从客户端发送的,但什么也没有发生。控制台在浏览器中告诉您什么?它只显示返回服务器的200(??)但是它不应该是返回的post吗?它不会是带有$.get调用的post。如果你需要一篇文章,你必须使用$.post,并序列化你的表单数据。http请求是从客户端发送的,但什么也没有发生。控制台在浏览器中告诉您什么?它只显示返回服务器的200(??)但是它不应该是返回的post吗?它不会是带有$.get调用的post。如果需要post,则必须使用$.post,并序列化表单数据。