Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Python Django和Ajax_Python_Ajax_Django - Fatal编程技术网

Python Django和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(

我正在尝试用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(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,并序列化表单数据。