我有一个基于以下功能视图UnboundLocalError局部变量
def post_search(request):
form = SearchForm()
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
cd = form.cleaned_data
results = SearchQuerySet().models(Post).filter(content=cd['query']).load_all()
# count total results
total_results = results.count()
return render(request, 'blog/post/search.html', {'form': form,
'cd': cd,
'results': results,
'total_results': total_results})
当我执行我的网址是调用这个函数,我得到以下错误
UnboundLocalError: local variable 'cd' referenced before assignment
[25/Aug/2016 22:48:13] "GET /blog/search/ HTTP/1.1" 500 69440
cd
,results
和total_results
变量在最后被声明并在与return render(request ...)
句子不同的范围内使用。
这是出于这个原因的错误。
我初始化这个变量作为这样一个全局变量:
cd = results=total_results=None
的条件句
def post_search(request):
form = SearchForm()
# Initialize variables
cd = results=total_results=None
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
cd = form.cleaned_data
results = SearchQuerySet().models(Post).filter(content=cd['query']).load_all()
# count total results
total_results = results.count()
return render(request, 'blog/post/search.html', {'form': form,
'cd': cd,
'results': results,
'total_results': total_results})
前和我的GET请求,它的工作原理
[25/Aug/2016 23:05:33] "GET /blog/search/ HTTP/1.1" 200 2260
我可以通过其他方式解决这个问题吗? 此功能用于在网络中搜索, 当我有许多用户使用此功能时,这是否正确?
我认为解决方案不是很好的做法......我不知道。
当一个问题得到解决时,您不应该更新您的问题。因为回答问题的人不会知道问题已更新。相反,发布另一个问题 –
我相信你的原始问题已经解决,你正在面临新的问题。 –
嗨@MoinuddinQuadri我第一次打我的问题已经有了明确的解决方案。当我询问初始化变量的解决方案是否合适时,我只是更新我的问题。你在我的问题中引用我的一个善意的方式,这是我问题的起源。 – bgarcial