値がフォームに入力されるたびに、特定の値をリセットするという問題があるフォームを修正しようとしています。
フォームが送信された後に特定の値を保持する方法について、このチュートリアルに従っていますが、突然、
このエラーが発生します
Key 'Category' not found in <QueryDict: {}>
File "C:\o\mysite\pet\views.py" in WhiteBoardFinder
234. if request.GET['Category']:
File "C:\Python26\Lib\site-packages\django\utils\datastructures.py" in __getitem__
258. raise MultiValueDictKeyError("Key %r not found in %r" % (key, self))
私のフォームフィールドはCategoryと呼ばれ、djangoで生成されたフォームを使用しているため、この問題を理解できないようです。
私のviews.py
def WhiteBoardFinder(request):
if request.GET['Category']:
request.session['Category'] = request.GET['Category']
category = request.GET['Category']
posts = WhiteBoard.objects.filter(Category=category)
form = WhiteBoardFinderForm(initial={'Category': request.session.get('Category')})
paginator = Paginator(posts, 1)
try: page = int(request.GET.get("page", '1'))
except ValueError: page = 1
try:
posts = paginator.page(page)
except (InvalidPage, EmptyPage):
posts = paginator.page(paginator.num_pages)
return render(request,"whiteboardfinder.html",{"posts":posts,'form':form},)
return render(request,"whiteboardfinder.html",{'form':WhiteBoardFinderForm()})
私のforms.py
class WhiteBoardFinderForm(forms.ModelForm):
class Meta:
model = WhiteBoard
fields = ('Category',)
私の whiteboardfinder.html
<form method="GET">
{{ form.as_p }}
<input type="submit" value="Search">
</form>
{% for post in posts.object_list %}
<div class="title">{{ post.name }}</div>
{% endfor %}
<!-- Next/Prev page links -->
{% if posts.object_list and posts.paginator.num_pages > 1 %}
<div class="pagination" style="margin-top: 20px; margin-left: -20px; ">
<span class="step-links">
{% if posts.has_previous %}
<a href= "?page={{ posts.previous_page_number }}">newer entries << </a>
{% endif %}
<span class="current">
Page {{ posts.number }} of {{ posts.paginator.num_pages }}
</span>
{% if posts.has_next %}
<a href="?page={{ posts.next_page_number }}"> >> older entries</a>
{% endif %}
</span>
</div>
{% endif %}
</div>