2012-05-02 7 views
0

장고로 작성된 간단한 검색 및 표시 응용 프로그램에서 페이지 매김을 사용하려고합니다.GET 메서드로 데이터가 전송되지 않습니다.

Djangoproject에서 Pagination에 대한 자습서를 따라 왔지만 서버에 데이터가 전송되지 않았습니다.

코드의 출력을 보려면 pdb.set_trace()을 사용하고 GET 사전은 비어 있습니다. 여기

은 템플릿의 코드와 URLs 파일입니다

results.html :

<form method="GET" id="searchForm" action="/search/"> 
     <input type="text" id="billSearched" name="q_word"> 
     <input type="submit" value="{% trans "Look for" %}"> 
</form> 

urls.py :

urlpatterns = patterns('', 
    url(r'^$','ps.views.bills',name="bills"), 
    url(r'^i18n/', include('django.conf.urls.i18n')), 
    url(r'^search/','ps.views.search',name="search"),) 

하고 뷰 그 이것과 함께 작동합니다. search.py ​​:

def search(request): 
    import pdb 
    pdb.set_trace() 
    searchTerm = request.GET.get('q_word') 
    if searchTerm == None: 
     searchTerm = "test" 
    found_bills = Bill.objects.filter(name__icontains = searchTerm) 
    page = request.GET.get('page') 
    paginator = Paginator(found_bills,25) 
    try: 
     current_page = paginator.page(page) 
    except PageNotAnInteger: 
     current_page = paginator.page(1) 
    except (EmptyPage, InvalidPage): 
     current_page = paginator.page(paginator.num_pages) 
return render(request,'results.html',{"results":current_page,"term": searchTerm}) 

왜 데이터가 전송되지 않습니까? 다른 게시물도 읽었으므로 그 솔루션은 저에게 효과적이지 않았습니다. 그들은 request.GET.get('q_word') 또는 request.GET['q_word']으로 GET 사전의 'q_word'값에 액세스 할 것을 제안했으며 그 대답에 따라 작동해야하지만 나에게는 그렇지 않습니다.

내 실수는 어디에서 왔습니까? 대단히 감사드립니다!

는 UPDATE :

[02/May/2012 14:03:59] "GET/HTTP/1.1" 200 39694 
Traceback (most recent call last): 
    File "/home/radu/projects/psdemo/.venv/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 284, in run 
    self.finish_response() 
    File "/home/radu/projects/psdemo/.venv/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 324, in finish_response 
    self.write(data) 
    File "/home/radu/projects/psdemo/.venv/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 403, in write 
    self.send_headers() 
    File "/home/radu/projects/psdemo/.venv/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 467, in send_headers 
    self.send_preamble() 
    File "/home/radu/projects/psdemo/.venv/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 385, in send_preamble 
    'Date: %s\r\n' % http_date() 
    File "/usr/lib/python2.7/socket.py", line 324, in write 
    self.flush() 
    File "/usr/lib/python2.7/socket.py", line 303, in flush 
    self._sock.sendall(view[write_offset:write_offset+buffer_size]) 
error: [Errno 32] Broken pipe 

---------------------------------------- 
Exception happened during processing of request from ('127.0.0.1', 59087) 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock 
    self.process_request(request, client_address) 
    File "/usr/lib/python2.7/SocketServer.py", line 310, in process_request 
    self.finish_request(request, client_address) 
    File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request 
    self.RequestHandlerClass(request, client_address, self) 
    File "/home/radu/projects/psdemo/.venv/local/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 570, in __init__ 
    BaseHTTPRequestHandler.__init__(self, *args, **kwargs) 
    File "/usr/lib/python2.7/SocketServer.py", line 641, in __init__ 
    self.finish() 
    File "/usr/lib/python2.7/SocketServer.py", line 694, in finish 
    self.wfile.flush() 
    File "/usr/lib/python2.7/socket.py", line 303, in flush 
    self._sock.sendall(view[write_offset:write_offset+buffer_size]) 
error: [Errno 32] Broken pipe 
---------------------------------------- 
+0

'검색'페이지의 URL에'? q_word = ...'가 있습니까? – DrTyrsa

+0

양식을 제출 한 후 URL이'? q_word = search_term'으로 끝나야합니다. –

+0

아니요, URL에 아무 것도 추가되지 않습니다. 최근에 Udacity 튜토리얼을 만들었지 만, 여기서는 그렇지 않습니다. –

답변

1

문제는 당신이 제출 때 쿼리 매개 변수는 URL의 끝에 추가되지 않는 것입니다. 양식을 제출할 때

<form id="searchForm" method="GET" action="/search/"> 
<fieldset> 
<input type="text" id="billSearched" name="q_word"> 
<br /> 
<input type="submit" value="{% trans "Look for" %}"> 
</fieldset> 
</form> 

이것은 당신의 URL이 ?q_word=search_term로 종료해야 : 난 당신이 양식이 구문을 사용하는 것이 좋습니다.

urls.py.

+0

오류 : '쿼리 값으로 없음을 사용할 수 없습니다.' 데이터가 아직 처리되지 않는 것 같습니다. 그리고 btw, URL은'http : //127.0.0.1 : 8000/search /'입니다. –

+0

@reos 문제는 [QueryString] (http://en.wikipedia.org/wiki/Query_string)이 URL에 추가되지 않는 것입니다. 만약 그렇다면 당신의 view의'request' 객체 안에서 그것을받을 것입니다. 양식 구문에 잘못된 것이 있습니다.'trans' 태그가 제대로 작동하고 있습니까? '트랜스'를 없애면 어떨까요? 그냥 실험하고 ... –

+0

정확히, 나는 그것을 볼 수 있지만 코드에 문제가 있는지 없는지 알아 내려고하고 있습니다. 나는 그것을 좁히려 고 노력하고있다 .. –

관련 문제