2012-03-04 2 views
0

사용자가 쿼리를 호출하고 사용자가 비교할 수있는 테이블에 결과를 표시하도록하려는 경우 사용자가 양식을 제출하면 파이썬 프로그램이 입력을받습니다. 제대로 결과를 얻을 수 있습니다.내가 뭘 잘못하고 있니? can not가 서버에 매개 변수를 전달하는 것 같습니다.

요약하면 사용자는 숫자를 입력하고 결과의 작은 테이블을 생성합니다.

입력이 전달되지 않은 이유는 무엇입니까?

무엇이 잘못되었는지 확인하시기 바랍니다. 여기

는 main.py이다

<!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> 

답변

1
index() 함수에 대한 템플릿 코드를 이동하고 나열로서 사전 값을 전달

: 여기

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을한다.

일반적으로 템플릿의 프로그래밍 논리를 데이터를 렌더링하는 데 필요한 최소값으로 제한하십시오.

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

이 값 요청 메소드는 GET입니다 중 하나 True 경우 단일 키 '선택'과 사전을 만드는 :

+0

당신은 멍청한 사람들의 용어로 설명해주십시오. 기본적으로 모든 "% python code"를 index()로 옮길 수 있습니까? – iCodeLikeImDrunk

+0

@Joe Chen : 예. 당신은이 권리를 이해합니다. 그것은 당신의 즉각적인 문제는 아니지만 코드를 옮기더라도 스스로 해결해야합니다. 템플릿 언어가 임의의 파이썬 코드를 허용한다고해서 거기에 넣는 것이 좋습니다. btw, 당신은 * 문자 그대로 모든 코드를 하나의'index()'함수 안에 넣을 필요는 없습니다. – jfs

1

나는 일을 할이 라인이되어 있는지 이해가 안 돼요 그렇지 않으면 False입니다. 나는 그것이 당신이 의미하는 바를 크게 의심합니다. 아마도 당신은 이것을 의미했습니다 :

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

나는 어딘가에 온라인에서 그걸 가지고있어, HTML 페이지가 어떤 함수를 호출 할 지 알 수 있도록 선택을 되돌릴 생각이었다. – iCodeLikeImDrunk

+0

괜찮지 만 코드가 선택을 반환하지 않는다. 요청 메소드가 GET인지 여부에 대한 부울을 반환합니다. –

+0

@JoeChen :'index()'가 GET과 POST 요청을 제공하는 [내 대답] (http://stackoverflow.com/a/9541298/4279)의 코드를 의미 할 수 있습니다. 예제를 간결하게하기 위해이 작업을 수행했습니다 (임의의 파이썬 코드를 템플릿에 넣는 것이 아니라 * 분명히 했어야 함). 귀하의 경우'index()'는 GET 요청만을 제공하므로'request.method'는 항상''GET''입니다. 'dict (key = 123)'을'index()'로부터 되 돌리는 것은'{{key}}'를 사용하여 템플릿에'123'을 삽입 할 수 있다는 것을 의미합니다 ('index.html'). – jfs