如何检查request.GET.get()是否重定向到上一页而不是404?

时间:2014-11-01 11:47:24

标签: django django-models django-views

我是django的新手,这给了我一个问题。我试图获得一个简单的GET变量。 的 mysite的/搜索/ Q =&安培;开始= 10安培;端= 20&安培;语言= Python的 它有效..

我的观点是:

def search(request, invalid_subscribe_to_alert_form=None):
    ...
    start = int(request.GET.get('start', 1)) 
    end = int(request.GET.get('end', 10))

然后我请求这个

mysite的/搜索/ Q =&安培;开始= AWORD&安培;端= 20&安培;语言= Python的

如何在捕获值错误后重定向到同一页面?这样请求将返回到404页面。

2 个答案:

答案 0 :(得分:0)

使用Django session framework。在之前的正确视图中,您必须存储最后访问的正确页面的值:

def search(request, invalid_subscribe_to_alert_form=None):
   # ...
   request.session['last-correct-path'] = request.path

然后在失败的视图中:

def search(request, invalid_subscribe_to_alert_form=None):
       # ...
       except ValueError:
           return HttpResponseRedirect(request.session['last-correct-path'])

无论如何,如果我是你,我最好返回404或显示一些错误信息,而不是仅仅重定向到最后一页。

答案 1 :(得分:0)

魔术比可预测性差。 This SO有多个答案,指向40X是用户在URL中粘贴参数时返回的正确状态代码。

另外:Django有pagination支持(搜索插件和REST框架也经常为你做这件事,例如DRF。)