0

我一直在尝试修复一个存在重置特定值问题的表单,每次将一个值输入到表单中。

我正在关注本教程,了解如何在提交表单后突然保留特定值,

我收到这个错误

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 生成的表单。

我的观点.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()})

我的表格.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 &lt;&lt; </a>
            {% endif %}

            <span class="current">
                &nbsp;Page {{ posts.number }} of {{ posts.paginator.num_pages }}
            </span>

            {% if posts.has_next %}
                <a href="?page={{ posts.next_page_number }}"> &gt;&gt; older entries</a>
            {% endif %}
        </span>
    </div>
    {% endif %}

</div>
4

1 回答 1

1
if request.GET.get('Category'):
    request.session['Category'] = request.GET['Category']
    category = request.GET['Category']
于 2013-03-29T07:25:34.713 回答