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>