2013-10-01 2 views
0

У меня есть код, который отправляет форму в соответствии с датой. Всякий раз, когда я использую пагинацию на ФОРМИТЕ выводит сообщение об ошибкеpagination не работает должным образом в django

"Key 'userchoice' not found in <QueryDict: {}>" 

пределы Pagination данные отображались правильно, но когда я нажимаю «ряд» он выводит сообщение об ошибке.

Вот что у меня до сих пор:

views.py: -

def testeruser(request): 
    getchoice = request.POST['userchoice'] 
    getfirstdate = request.POST['firstdate'] 
    getseconddate = request.POST['seconddate'] 
# getfirstdate = '2013-09-25' 
# getseconddate = '2013-09-26' 

    if getchoice == '0': 
     getdata = applicationform.objects.filter(date__gte=getfirstdate , date__lte=getseconddate) 
     ##### PAGINATION 
     searchpagination = Paginator(getdata ,3) 
     page=request.GET.get('searchpage') 
     try: 
      searchcontacts = searchpagination.page(page) 
     except PageNotAnInteger: 
      searchcontacts = searchpagination.page(1) 
     except EmptyPage: 
      searchcontacts = searchpagination.page(searchpagination.num_pages) 

     if getdata: 
      return render_to_response('registration/search_page.html', {'getdata':getdata ,'getchoice':getchoice ,'searchcontacts': searchcontacts})  
     else: 
      return HttpResponse('NO ITEMS FOUND ON THIS DATE') 

в пользовательских шаблонов: -

<form method="POST" action="/testeruser/" class="form-horizontal" name="searchform" enctype="multipart/form-data" >{% csrf_token %} 
       <select name="userchoice" id="client_specification" class="span2" required>                 <option value='-1'>Select Your Choice </option> 
                   <option value='0'>Biddings</option> 
                   <option value='1'>Interviews</option> 
                   <option value='2'>Jobs</option> 
       </select> 
       From: <input type="text" class="input-xlarge" name="firstdate" id="search1" readonly="readonly" /> 
          To: <input type="text" class="input-xlarge" name="seconddate" id="search2" readonly="readonly"/> </span> 
          <button class="btn btn-gebo" type="submit" name="asubmit" >Submit</button> 
           </form>  

    <!------------ PAGINATION----------------> 
         <div class="pagination"> 
          <ul> {% if searchcontacts.has_previous %} 
           <li><a href="?searchpage={{ searchcontacts.previous_page_number }}">PREVIOUS</a></li> 
       {% endif %} 

       {% if searchcontacts.has_next %}  
           <li><a href="?searchpage={{ searchcontacts.next_page_number }}">NEXT</a></li> 
       {% endif %} 
          </ul>  
         </div> 
    <!------------ PAGINATION----------------> 

ответ

2

Разбивка в Django работает нормально, это ваш код Это проблема.

По какой-то причине вы используете POST для отправки исходных переменных поиска, но затем создаете ссылки на страницы, которые просто делают GET с номером страницы. Конечно, Django не знает, каковы ваши предыдущие критерии поиска, так как вы не отправляете их в данные POST - отсюда и ошибка.

Обычный способ сделать это - отправить исходный запрос поиска через GET - это наилучшая практика, так как поиск не изменяет данные. Затем вы включаете те же самые переменные во все ссылки на страницы, просто заменяя номер страницы.

Смежные вопросы