0

Djangoで記述された単純な検索および表示アプリケーションでPaginationを使用しようとしています。

Djangoprojectからのページネーションに関するチュートリアルに従いましたが、サーバーにデータが送信されていません。

以前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})

データが送信されないのはなぜですか?私は他の投稿も読んだことがありますが、そこでの解決策はうまくいきませんでした。彼らは、GETディクショナリの「q_word」値にアクセスすることを提案しましrequest.GET.get('q_word')request.GET['q_word']。その答えによって、それは機能するはずですが、私にとっては機能しません。

私の間違いはどこにありますか?事前にどうもありがとうございました!

アップデート:

[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
----------------------------------------
4

1 に答える 1

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>

?q_word=search_termこれにより、フォームを送信するときにURLがで終わるようになります。

urls.pyうまく見えます。

于 2012-05-02T11:49:33.657 に答える