2013-05-04 109 views
0

我使用paginator创建一系列满足特定条件的页面。
每个页面都包含一个用户可以提交的表单。
表单提交后,我希望他们留在/返回到他们所在的页面。 我该怎么做?
我到处搜索并阅读文档,但无法找到答案。
我相信这个问题是在电脑前,但请帮助:)表单提交后重定向到分页页面 - Django

下面是应该这样做的观点:

def assignment(request, pk): 
"""View for each assignment""" 
if request.user.is_authenticated(): 
    #### Get correct articles 
    assignment = get_object_or_404(Assignment, pk=pk) 
    country = assignment.country.ccode 
    start_date = assignment.start_date 
    end_date = assignment.end_date 
    articles = Article.objects.filter(country=country).filter(pub_date__range=(start_date,end_date)) 
    paginator = Paginator(articles, 1) 

    #### Pagination #### 
    page = request.GET.get('page') 
    try: 
     articles = paginator.page(page) 
    except PageNotAnInteger: 
     articles = paginator.page(1) 
    except EmptryPage: 
     articles = paginator(page(paginator.num_pages)) 

    #### Forms #### 
    if request.method == 'POST': 
     if 'event' in request.POST: 
      event_form = EventRecordForm(request.POST, prefix='event') 
      if event_form.is_valid(): 
       obj = event_form.save(commit=False) 
       obj.article = paginator.page(page).object_list[0] 
       obj.classified = True 
       obj.coder = request.user.coder 
       obj.save() 
       return HttpResponseRedirect(reverse ('coding:assignment', args=(pk,))) 
      relevance_form = RelevanceCodingRecordForm(prefix='relevance') 
     elif 'relevance' in request.POST: 
      relevance_form = RelevanceCodingRecordForm(request.POST, prefix='relevance') 
      if relevance_form.is_valid(): 
       obj = relevance_form.save(commit=False) 
       obj.article = paginator.page(page).object_list[0] 
       obj.screened = True 
       obj.coder = request.user.coder 
       obj.save() 
       return HttpResponseRedirect(reverse ('coding:assignment', args=(pk,))) 
      event_form = EventRecordForm(prefix='event') 
    else: 
     event_form = EventRecordForm(prefix='event') 
     relevance_form = RelevanceCodingRecordForm(prefix='relevance') 


else: 
    print ERROR 
return render(request, 'coding/assignment.html', 
{'articles':articles,'assignment':assignment,'event_form':event_form,'relevance_form':relevance_form}) 

编辑:
相关建议我将?next={{request.path}}附加到我的表单操作中。
但这不起作用,因为paginator页面不包含在路径中。 做什么,他认为出现这种情况: http://127.0.0.1:8000/coding/assignment/1/?next=/coding/assignment/1/
我没有给分页程序第二次看,虽然,认为?page={{ articles.number }}应该工作,因为在文档他们做这样的链接的例子:
<a href="?page={{ articles.next_page_number }}">next</a> 然而,这并未没有工作。
有没有其他想法?

回答

0

我认为网页参数应该是Request的,所以尽量追加这在模板提交行动:

下一个= {{Request的}}

,并确保您在settings.py文件中有作为模板上下文处理器的请求。 (详情请见https://stackoverflow.com/a/1711592/837845

+0

不幸的是,它不在request.path中,我更新了我的问题。 但是,无论如何,谢谢! :) – LukasKawerau 2013-05-04 14:14:43

相关问题