私はDjangoで書かれた簡単な検索および表示アプリケーションでページネーションを使用しようとしています。GETメソッドでデータが送信されない
DjangoprojectのPaginationのチュートリアルに従っていますが、サーバーに送信されるデータはありません。
私はpdb.set_trace()
を使用してコードの出力を表示しました。GET
辞書は空です。
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"),)
とビューここ
は、テンプレート内のコードとURLs
ファイルですこれで動作します。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
----------------------------------------
'?q_word = ...'はあなたのURLの 'search'ページにありますか? – DrTyrsa
フォームを送信した後、URLが '?q_word = search_term'で終わることを確認してください。 –
いいえ、URLには何も追加されません。私は最近Udacityチュートリアルを作成しましたが、ここではうまくいきません。 –