我究竟做错了什么?似乎无法将参数传递给服务器

时间:2012-03-04 18:26:45

标签: python bottle

我试图让用户输入一个数字,该数字将调用查询并在表中显示结果供用户比较,但是当用户提交表单时,python程序获取输入并正确获取结果。 / p>

简而言之,用户输入一个数字,它会生成一个小的结果表。

输入未被传递的某些原因。

请检查我的工作,看看有什么问题。

这是main.py:

from bottle import request, route, run, view

@route('/')
@view('index.html')
def index():
    print request.GET.get('choice');
    return dict(choice = request.method == 'GET');

run(host = 'localhost', port = 9988);

这是index.html:

<!DOCTYPE html>
<html>
    <head>
        <title>Search Engine Comparator!</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <style>
            #navlist li
            {
                display: inline;
                list-style-type: none;
                padding-right: 20px;
            }
        </style>
    </head>
    <body>  
        % from bSearch import *
        % from gSearch import *     
        % from termList import *        
        <center><h2>Search Engine Comparator</h2></center>  
        <div id="navcontainer" align="center">
            <ul id="navlist">
                <ul>
                    % r1 = getList1();
                    % for r in r1:
                    <li> {{ r }} </li>
                    % end
                </ul>
                <ul>
                    % r2 = getList2();
                    % for r in r2:
                    <li> {{ r }} </li>
                    % end
                </ul>
                <ul>
                    % r3 = getList3();
                    % for r in r3:
                    <li> {{ r }} </li>
                    % end
                </ul>
                <ul>
                    % r4 = getList4();
                    % for r in r4:
                    <li> {{ r }} </li>
                    % end
                </ul>
                <ul>
                    % r5 = getList5();
                    % for r in r5:
                    <li> {{ r }} </li>
                    % end
                </ul>
            </ul>
            <ul id="navlist">
                <ul>
                    % r6 = getList6();
                    % for r in r6:
                    <li> {{ r }} </li>
                    % end
                </ul>
                <ul>
                    % r7 = getList7();
                    % for r in r7:
                    <li> {{ r }} </li>
                    % end
                </ul>
                <ul>
                    % r8 = getList8();
                    % for r in r8:
                    <li> {{ r }} </li>
                    % end
                </ul>
                <ul>
                    % r9 = getList9();
                    % for r in r9:
                    <li> {{ r }} </li>
                    % end
                </ul>
                <ul>
                    % r10 = getList10();
                    % for r in r10:
                    <li> {{ r }} </li>
                    % end
                </ul>
            </ul>
        </div>
        % choice = request.GET.get('choice');
        % if choice:
        <form action="/" method="get" id="resForm" name="resForm">
            <div align="center">
                <label for="choice">Enter which list to query:</label>
                <input type="text" name="choice" />
                <input type="submit" value="Submit" />
            </div>          
        % else:
        <form action="" method="get" id="resForm" name="resForm">
            <div align="center">
                <label for="choice">Enter which list to query:</label>
                <input type="text" name="choice" />
                <input type="submit" value="Submit" />
            </div>              
            % queries = getQueries(choice);
            % for q in queries:
            <table border="1" width="100%">
                <tr>
                    <th></th><th>The query is: {{ q }}</th><th></th>
                </tr>
                <tr>
                    <td align="center"><input type="checkbox" id="b" name="bing">I pick this!!!</td>
                    <td align="center"><input type="checkbox" id="g" name="goog">I pick this!!!</td>
                    <td align="center"><input type="checkbox" id="y" name="yhoo">I pick this!!!</td>                
                </tr>               
                <tr>                    
                    <td width="33%">
                        <ol>
                            % bRes = bSearch(q);        
                            % for b in bRes[:8]:
                            <li>{{ b.title }} <br /> <a href={{ b.url }}>{{ b.url }}</a></li>
                            % end
                        </ol>
                    </td>
                    <td width="33%">
                        <ol>

                        </ol>
                    </td>
                    <td width="33%">
                        <ol>
                            <li>aint working b!</li>
                        </ol>
                    </td>                   
                </tr>   
                <br />
                % end       
            </table>            
            % end
            <center><br /><input type="button" id="checker" value="Click to get the count!" onclick="checkerCount()" /></center>
        </form>     
    </body>
</html>     

<script type="text/javascript">
function checkerCount() 
{
    var inputTags = document.getElementsByTagName('input');
    var size = inputTags.length;
    var b = 0;
    var g = 0;
    var y = 0;
    for (var i = 0; i < size; i++) 
    {
        if(inputTags[i].type=='checkbox' && inputTags[i].checked && inputTags[i].id=='b') { b++; }
        if(inputTags[i].type=='checkbox' && inputTags[i].checked && inputTags[i].id=='g') { g++; }
        if(inputTags[i].type=='checkbox' && inputTags[i].checked && inputTags[i].id=='y') { y++; }
    }
    alert("After counting and all that, we found the scores!\n" + 
          "Bing has score: " + b +
          "\nGoogle has score: " + g + 
          "\nYahoo has score: " + y);
}
</script>

2 个答案:

答案 0 :(得分:1)

将代码从模板移动到index()函数,并将列表作为字典值传递。

通常,尝试将模板中的编程逻辑限制为渲染数据所需的最小值。

答案 1 :(得分:1)

我不明白这条线应该做什么:

return dict(choice = request.method == 'GET');

这是使用单个键“choice”创建一个字典,如果请求方法是GET,则其值为True,否则为False。我非常怀疑这就是你的意思。也许你的意思是:

return {'choice': request.GET.get('choice')}