0

これが私のView関数です:

def search(request):
    c = {}
    c.update(csrf(request))
    if request.method == 'POST': 
        form = Search(request.POST) 
        if form.is_valid():
            search_query=form.cleaned_data['query']
            #1
            pi=add.add(search_query)
            return HttpResponse('polls/search.html',{'pi': pi}, c) 
    else:
        return render_to_response('polls/search.html', c)

これは私のURLファイルです:

from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^search/$', 'polls.views.search'),
    url(r'^admin/', include(admin.site.urls)),
)

そして、これは私のテンプレートです:

 <form action="/polls/search" method="post">{% csrf_token %}
  <p><label for="query_label">query:</label>
    <input type="text" name="query_txt" id="query_txt_id" /></p>
  <input type="submit" value="Submit" />
 </form>

 {% if pi %}
    <ul>
    {% for p in pi %}
        <li>{{p}}</li>
    {% endfor %}
    </ul>
{% else %}
    <p>No Results are available.</p>
{% endif %}

送信ボタンを押しても、同じページに移動しません。'polls/search' のような別のパスを常に探します。しかし、私のURLファイルのどこにも言及されていません。

手伝ってくれませんか?

4

2 に答える 2

1

actionフォームの投稿は、 paramの url に対して行われます。あなたのアクションパラメータは/poll/searchそのURLに行くので。

于 2012-11-09T10:23:30.693 に答える
0

それは、フォームのactionパラメーターとして指定したものだからです。他の場所に移動させたい場合は、そこに別の値を入力します (同じページに移動させたい場合は、値をまったく入力しません)。

于 2012-11-09T10:23:29.487 に答える