问题:在管理系统界面往往是有分页的,初次编写列表的删除功能时很可能会出现删完之后页面跳转到第一页的问题,或者筛选完之后删除某一项结果删完之后跳转到未筛选页面。与实际分页管理的效果大庭相径。
解决思路:
1. 起初只遇到了分页的情况,解决方法很简单,在删除按钮的href中直接传值,例如:xxx/xxx/?page=10&uid=15。然后在views中定义的delete方法里使用request.GET获得这两个值,uid的值用来实现数据库里该条目的删除,接下来直接重定向到page页码就行了。思路很清晰,但是一般的列表都有一个筛选功能……于是问题出现了。
2. 筛选完毕后页面的url形如:xxx/xxx/?sel=name&search=小红,如果按照1中所述方法就会出现很尴尬的场面,首先传过去的page是筛选后的page,但删除之后它会跳转到未筛选页面的这个page,可以说前后毫无逻辑。解决方法是获得筛选时提交的信息,request.META提供了这一功能。
request.META包含当前HTTP请求的Headers头部信息,字典形式。 在诸多键值对里为顺利实现这项功能需要的是'HTTP_REFERER',该值是删除按钮所处界面的url包含了页面上被提交的信息,甚至1中描述的方式都显得繁琐。使用方法如下所示:
1 def xxx_delete(request): 2 url = request.META['HTTP_REFERER'] 3 nid = request.GET['nid'] 4 models.Xxx.objects.filter(id=nid).delete() 5 return redirect(url)
标签:web,删除,为例,xxx,request,django,筛选,page,页面 From: https://www.cnblogs.com/raininghill/p/17377127.html