Python 局部变量';用户名';在分配django之前引用
我创建了一个名为panel的函数。 当我运行服务器时,它会给出一个错误“UnboundLocalError at/service panel/分配前引用的局部变量'username'。 我不知道出了什么问题 这里是视图。pyPython 局部变量';用户名';在分配django之前引用,python,django,session,django-views,Python,Django,Session,Django Views,我创建了一个名为panel的函数。 当我运行服务器时,它会给出一个错误“UnboundLocalError at/service panel/分配前引用的局部变量'username'。 我不知道出了什么问题 这里是视图。py @login_required def panel(request): if(request.session.has_key('username')): username = request.session['username'] d
@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\u key('username')
可能是False
。然后,将不分配用户名
变量。与数据
变量相同
解决办法可以是:
@需要登录\u
def面板(请求):
用户名=无
数据=无
如果(request.session.has_key('username')):
用户名=请求。会话['username']
数据=查询.objects.filter(服务=请求.session['service'])
返回呈现(请求'serviceproviderpanel/base.html',{'username':username','data':data})
当数据
或用户名
为无
时,您需要控制模板(服务提供商面板/base.html
)中的逻辑