【发布时间】:2018-08-08 01:02:21
【问题描述】:
我有一个 Django 2 应用程序一次通过一个大的“地点”记录进行分页,并且模板为每个记录添加了一些单选按钮集,用户可以在验证记录中的内容时检查这些单选按钮集。我将每条记录包装在一个表单中,并且在提交时我想 a) 在单独的“审查”模型/表中从这些选择中创建一个新记录,然后 b) 重定向到分页器的下一页。
我从表单单选输入创建新记录没有问题,然后重定向到确认页面。问题是如何重定向到相同的视图/模板但推进页面。
我尝试重定向到相同的视图但不同的 url:
path('place/', views.place, name='place'),
path('place/next', views.place, name='placenext'),
然后在视图中解析请求对象,但是失败没有错误:
def place(request):
paginator = Paginator(place_list, 1)
req = request.path
page = request.GET.get('page')
if req[-4:] == 'next':
records = paginator.get_page(str(int(page)+1))
else:
records = paginator.get_page(page)
context = {
'records': records, 'page': page
}
return render(request, 'review/place.html', context=context)
我还尝试了许多其他方法,包括以几种方式插入 ?page=,但它在黑暗中摸索,因为文档中没有说明如何完成此操作。据我所知,请求对象中没有任何内容可以让我将视图设置为“双重用途” - 只是呈现记录或推进页面。
[正确答案,由于下面的@Satendra]
单路径,单视图,无论 GET 还是 POST 都返回相同,但如果是 POST,则使用表单内容创建新记录。谢谢
if request.method == 'POST':
# create Related record
relform = request.POST
related = Related.objects.create(
placeid = relform['placeid'],
...,
...
)
pprint(locals())
return render(request, 'review/place.html', context=context)
【问题讨论】:
标签: django pagination