我有一个html模板,我列出用户Django模型对象。此页面还有一个分页和链接来排列对象。现在我正在考虑在每个对象上放置一个删除按钮,这会从列表和数据库中删除它,而不会破坏顺序或分页(返回当前没有删除对象的查询集)。Django视图与列表(订单和分页)和删除功能?
我试过用它自己的url进行删除视图,但我认为最好的做法是把它全部放在同一视图中,以便能够返回/处理order_by和分页。像我的分页链接加载一个href的:
“MYLIST /页= {{results.next_page_number}} & ORDER_BY = {{ORDER_BY}}?”
但具有更多的删除,someID参数(什么是首选方法?)。我不确定这是干净的(和安全的)方式来做到这一点?我正在考虑检查对象用户对登录的用户也。
deleteid = get_object_or_404(Mymodel, pk=?) #what to do here?
if deleteid.user == request.user:
deleteid.delete()
我在想这里吗?我需要一些指导将所有这些放在一起。
查看:
def Mylist(request):
order_by = request.GET.get('order_by', 'somedefault')
myobjects_list = Mymodel.objects.filter(user=request.user).order_by(order_by)
paginator = Paginator(myobjects_list, 5)
page = request.GET.get('page')
try:
results = paginator.page(page)
except PageNotAnInteger:
results = paginator.page(1)
except EmptyPage:
results = paginator.page(paginator.num_pages)
context = {'results ': results, 'order_by': order_by }
return render_to_response('mylist.html', context, context_instance=RequestContext(request))
您正在创建一个查询字符串,您可以通过在request.MET引用键让您的视图中的值['QUERY_STRING']你可以尝试使用login_required修饰器来确保用户已经登录。我只是不会这样做。 –
谢谢。是的,我不想在整个视图中使用login_required装饰器,所以我可以使用列表函数而不使用其他模板中的删除选项。您如何看待下面答案中的解决方案(由radev)?这更像是你会做的事吗? – user3199840
我就是这么做的。您可以将对象的id作为列出的每个项目的id应用,并在ajax响应时使用javascript将其删除。 –