【问题标题】:Testing a django session variable in a django view and return在 django 视图中测试 django 会话变量并返回
【发布时间】:2014-08-07 02:59:36
【问题描述】:

我正在尝试根据会话变量集执行选择性操作。

这就是我尝试的方式-

   try:
        if request.session.get('firstoption', False):
            # perform operation for first option
            return redirect(reverse('first_option_view'))
    except:
        try:
            if request.session.get('secondoption', False):
                # perform operation for second option
                return redirect(reverse('second_option_view'))
        except:
            return HttpResponse("WTF!")

执行命中第一个if request.session.get('firstoption', False):,它返回none,在第二种情况下,它不会去except,而是返回以下错误-views.viewname didn't return an HttpResponse object

我做错了什么?

【问题讨论】:

    标签: python django session


    【解决方案1】:

    如果您没有预料到任何异常,那么您将不需要 try except 块。

    if request.session.get('firstoption', False):
        # perform operation for first option
        return redirect(reverse('first_option_view'))
    
    if request.session.get('secondoption', False):
        # perform operation for second option
        return redirect(reverse('second_option_view'))
    
    else:
        return HttpResponse("WTF!")
    

    看起来您应该为此使用表单。这样,您就可以对无效输入进行错误检查并获得许多其他好处。

    【讨论】:

      【解决方案2】:

      get 返回 None 或 False,但不是异常;因此,您的 if 没有执行 yes 分支,但这也不例外。然后,您只需跳过其余代码并退出函数而不返回任何内容。你应该有一个 else。

      【讨论】:

        猜你喜欢
        • 2014-09-27
        • 2015-10-24
        • 2012-12-28
        • 2014-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 2020-01-09
        相关资源
        最近更新 更多