簡體   English   中英

分配 django 之前引用的局部變量“用戶名”

[英]local variable 'username' referenced before assignment django

我創建了一個稱為面板的 function。 當我運行服務器時,它會給出錯誤“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})

你有一個邏輯錯誤:

@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})

問題是條件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 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM