2014-11-01 90 views
0

我是新来的django,这给我一个问题。我试图得到一个简单的GET变量。 的mysite /搜索/ Q = &开始= 10 &末= 20 &语言= Python的 它的工作原理..如何检查request.GET.get()是否重定向到上一页而不是404?

我的看法是:

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

,然后我要求这

mysite/search /?q = & start = aword & end = 20 & language = Python

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

回答

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或显示一些错误消息,而不是重定向到最后一个正确的页面。

+0

嗯,我对django很陌生,如果你能告诉我该如何重定向到404页面将会很有帮助。 – rrindam 2014-11-01 19:32:51

+0

Google是你的朋友。但无论如何https://docs.djangoproject.com/zh/dev/topics/http/views/#the-http404-exception – dukebody 2014-11-02 18:53:32

0

魔法比可预测性差。 This SO有多个答案,指向40X是正确的状态代码,以便当用户放弃URL中的参数时返回。

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

相关问题