2014-04-30 2 views
0

요약 템플릿에서 요청을 GET :
내가했던 방법은 서투른 것 같다. 요약하면 기본적으로 jquery 결과를보기로 전달하려고합니다. 그런 다음이 뷰는 jquery 변수에 저장된 값으로 perl 스크립트를 실행하는 하위 프로세스를 실행합니다. 이 perl 스크립트는 html 페이지를 생성합니다 (실제로 표시된 내용을 업데이트합니다). Django는 0.3 초 ​​정도 기다린 후 perl 스크립트가 끝날 때까지 (그리고 새로운 html 파일이 존재할 때까지) 페이지를 새로 고침해야합니다. 다음은이 작업을 수행하려는 시도입니다. 그래도 제대로 작동하지 않습니다. 내가 할 수있는 것에 대한 어떤 제안이라도 대단히 감사하겠습니다!보기에 문제의


현재 데이터베이스를 쿼리하고 일부 드롭 다운 테이블을 채우며 펄 스크립트를 실행하는보기가 있습니다. perl 스크립트는 드롭 다운 메뉴에서 선택한 값을 기반으로 html 파일을 생성합니다. 그러면 페이지가 업데이트됩니다. 이 모든 것을 위해 PyCharm을 IDE로 사용하고 있습니다.

Internet Explorer 11에서이 페이지는 대략 1/5로 업데이트됩니다. PyCharm의 디버그 콘솔에서 다음과 같이 표시됩니다 : 작동하지 않을 때마다 각 요청마다

[30/Apr/2014 10:26:11] "GET /Pass_Rate_by_Platform/?resultValue=cd&modelValue=Ahmed_25 HTTP/1.1" 200 19886 
[30/Apr/2014 10:26:11] "GET /Pass_Rate_by_Platform/ HTTP/1.1" 200 19886 

이 표시됩니다. 가끔이 페이지를 새로 고침 그래서 분명히

[30/Apr/2014 11:01:52] "GET /Pass_Rate_by_Platform/ HTTP/1.1" 200 19902 
[30/Apr/2014 11:01:52] "GET /Pass_Rate_by_Platform/?resultValue=liftforce&modelValue=Ahmed_20 HTTP/1.1" 200 19902 

을 때 안 : 그것은 않는 경우

는 PyCharm이 표시됩니다. IE의 문제는 분명합니다.

파이어 폭스에서는 방화범이 끌리는 모든 요청은 똑같은 Get 데이터를 보내는 것이라고합니다. 그러나 이것은 PyCharm 디버그 섹션에 표시되지 않습니다. 여기

는 관련 코드 :

views.py

def platform_pass_rate(request): 
    db = MySQLdb.connect(user='a_user', db='secondary', passwd='something', host='ab-cd') 
    cursor = db.cursor() 
    cursor.execute('SELECT study FROM study ORDER BY study ASC') 
    study_model = [row for row in cursor.fetchall()] 
    cursor.execute(
      'SELECT column_name FROM information_schema.columns where table_name = 
      \'finalvalues\' order by ordinal_position') 
    study_result = cursor.fetchall() 
    db.close() 
    study_models = [i for sub in study_model for i in sub] 
    study_results = [i for sub in study_result for i in sub] 
    if request.method == 'GET': 
     resultVar = request.GET.get('resultValue', 'cd') 
     modelVar = request.GET.get('modelValue', 'Ahmed_00') 
     subprocess.call(["perl", "static/static/perl/passRateByPlatform.pl", resultVar, modelVar]) 
     # return HttpResponse(resultVar) 
    else: 
     subprocess.call(["perl", "static/static/perl/passRateByPlatform.pl", "liftforce", "Ahmed_25"]) 
    current_url = get_full_path(request) 

    return render_to_response("data_form_platform.html", {'our_url': current_url, 
                'study_models': study_models, 
                'study_results': study_results}) 

base.html

<script type="text/javascript"> 

    $(document).ready(function() { 
     {#  $.ajaxSetup({ cache: false });#} 
     var current_url = $('#current_url').text(); 
     var id = current_url.trim(); 
     $('#' + id).addClass('active'); 

     $('#platform_data_form_button').click(function() { 
      var selectedResultValue = $('#platform_type_of_result :selected').text(); 
      console.log(selectedResultValue); 
      var selectedModelValue = $('#platform_models :selected').text(); 
      console.log(selectedModelValue); 
      $('#platform_type_of_result').change(function() { 
       var selectedResultValue = $('#platform_type_of_result :selected').text(); 
       console.log(selectedResultValue); 
      }); 
      $('#platform_models').change(function() { 
       var selectedModelValue = $('#platform_models :selected').text(); 
       console.log(selectedModelValue); 
      }); 

      $.get("/Pass_Rate_by_Platform/", { resultValue: selectedResultValue, modelValue: selectedModelValue}, function (response) { 
       console.log("workinggggggg"); 
      }); 


     }); 
    }); 
</script> 

해당 버튼 :

,
<div class="col-md-1" style="margin-left: -20px" id="platform_data_form_button"> 
     <a href="/Pass_Rate_by_Platform/" class="btn btn-primary btn-success"></span> Confirm</a> 
</div> 

답변

0

새로운 솔루션을 찾기 위해 수 시간 동안 노력한 결과, 후행 /이 작업을 중단 한 유일한 방법이라는 것을 깨달았습니다. 수정 된 잘못된 코드는 다음과 같습니다.

base.HTML

/ 누락 주에 href="/Pass_Rate_by_Platform"

$(document).ready(function() { 
     {#  $.ajaxSetup({ cache: false });#} 
     var current_url = $('#current_url').text(); 
     var id = current_url.trim(); 
     $('#' + id).addClass('active'); 

     $('#platform_data_form_button').click(function() { 
      var selectedResultValue = $('#platform_type_of_result :selected').text(); 
      console.log(selectedResultValue); 
      var selectedModelValue = $('#platform_models :selected').text(); 
      console.log(selectedModelValue); 
      $('#platform_type_of_result').change(function() { 
       var selectedResultValue = $('#platform_type_of_result :selected').text(); 
       console.log(selectedResultValue); 
      }); 
      $('#platform_models').change(function() { 
       var selectedModelValue = $('#platform_models :selected').text(); 
       console.log(selectedModelValue); 
      }); 

      $.get("/Pass_Rate_by_Platform", { resultValue: selectedResultValue, modelValue: selectedModelValue}, function (response) { 
       console.log("workinggggggg"); 
      }); 


     }); 
    }); 
</script> 

관련 버튼 :

/ 누락 참고 ERR의 단순한

<div class="col-md-1" style="margin-left: -20px" id="platform_data_form_button"> 
     <a href="/Pass_Rate_by_Platform" class="btn btn-primary btn-success"></span> Confirm</a> 
</div> 

href="/Pass_Rate_by_Platform"에서 ors는 상처의 세계가 될 수 있습니다 ... 바라건대 다른 누구도이 고난을 통과해야합니다.