0

paginator を使用して、特定の基準を満たす一連のページを作成します。
各ページには、ユーザーが送信できるフォームが含まれています。
フォームが送信されたら、元のページにとどまる/元のページに戻ってほしい。それ、どうやったら出来るの?
どこでも検索してドキュメントを読みましたが、答えが見つかりません。
問題はコンピューターの前にあると確信していますが、助けてください:)

以下は、これを行う必要があるビューです。

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})

編集:関連するフォームアクション
に追加することを提案しました。 ただし、ページネーター ページがパスに含まれていないため、これは機能しません。彼が提案したことを実行すると、これが起こります: 私は paginator をもう一度見て、うまくいくはずだと思いました . 他のアイデアはありますか??next={{request.path}}
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>

4

2 に答える 2