現在、小さなデータベースの検索フォームを作成しようとしています。
これは私の models.py ファイルの一部です:
from django.db import models
from django import forms
#...
class searchForm(forms.Form):
searchField = forms.CharField(max_length = 100)
#...
これは私の views.py ファイルの一部です:
from django.shortcuts import render
from django.http import HttpResponse
from django.http import HttpResponseRedirect
#...
def index(request):
template = loader.get_template('index.html')
context = Context({})
return HttpResponse(template.render(context))
def search(request):
if request.method == 'POST': # If the form has been submitted...
form = searchForm(request.POST)# A form bound to the POST data
if form.is_valid():
searchData = form.cleaned_data['searchField']
return HttpResponseRedirect('search.html') # Redirect after POST #???
else:
searchData = searchForm() # an unbound form
return render(request, 'search.html', {'form': form,}) #???
#...
これは私のindex.htmlの一部で、そのフォームを実装したい場所です:
<label for="Search">Search:</label>
<form action = "/search/" method = "post">
{% csrf_token %} {{ form.as_p }}
<input type = "submit" value = "Go" />
</form>
私がやろうとしていること:
フォームを送信すると、検索テキストフィールドからの入力が最初に表示される search.html という結果ファイルにリダイレクトしたいと思います。リンク構造は次のようになります:
Landing-Page is: http://127.0.0.1:8000/
after a submit form:http://127.0.0.1:8000/search.html
行を「???」でマークした検索方法にエラーがある可能性があります。次の問題は、検索テキスト フィールドが表示されないことです。
誰かが私にアドバイスを与えることができれば、素晴らしいでしょう。
ありがとう、エルジョブソ