【问题标题】:local variable 'username' referenced before assignment django分配 django 之前引用的局部变量“用户名”
【发布时间】:2020-07-20 02:19:26
【问题描述】:

我创建了一个称为面板的函数。 当我运行服务器时,它会给出错误“UnboundLocalError at /service-panel/ local variable 'username' referenced before assignment”。 我不知道出了什么问题。

这里是views.py

@login_required
def panel(request):
    if(request.session.has_key('username')):
        username = request.session['username']
        data = Enquiry.objects.filter(service=request.session['service'])

    return render(request, 'service-provider-panel/base.html', {'username':username, 'data':data})

【问题讨论】:

    标签: python django session django-views


    【解决方案1】:

    你有一个逻辑错误:

    @login_required
    def panel(request):
        if(request.session.has_key('username')):
            username = request.session['username']
            data = Enquiry.objects.filter(service=request.session['service'])
        else:
            # else statement is needed because the variables username and data must be defined.
            username = None
            data = None
    
        return render(request, 'service-provider-panel/base.html', {'username':username, 'data':data})
    

    【讨论】:

      【解决方案2】:

      问题是条件request.session.has_key('username')可以是False。然后,username 变量将不会被赋值。与data 变量相同。

      解决方案可能是:

      @login_required
      def panel(request):
          username = None
          data = None
          if(request.session.has_key('username')):
              username = request.session['username']
              data = Enquiry.objects.filter(service=request.session['service'])
      
          return render(request, 'service-provider-panel/base.html', {'username':username, 'data':data})
      

      datausernameNone 时,您需要控制模板(service-provider-panel/base.html) 中的逻辑。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多