从模板获取请求到视图

时间:2014-04-30 00:38:10

标签: jquery python html django perl


问题摘要:
我做的方式看起来很笨拙。总结一下,我基本上试图将jquery结果传递给视图。然后,该视图将执行一个子进程,该子进程运行perl脚本,其值存储在jquery变量中。这个perl脚本生成html页面(实际上更新了显示的内容)。然后Django需要等待(如0.3s)然后刷新页面,直到perl脚本完成(并且存在新的html文件)。以下是我尝试这样做的尝试。但它无法正常工作。任何关于我能做什么的建议都将不胜感激!


我目前有一个查询数据库,填充一些下拉表,还运行perl脚本的视图。 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
当每个请求不起作用时

当它发生时,PyCharm会显示:

[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

很明显,它有时会在不应该刷新页面时刷新页面。这显然是IE的问题。

在Firefox中,firebug告诉我,我发出的每个请求都是发送相同的类似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>

1 个答案:

答案 0 :(得分: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>

相关按钮:

注意/

中缺少href="/Pass_Rate_by_Platform"
<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>

最简单的错误可能是一个受伤的世界......希望没有其他人必须经历这场考验。