2016-03-22 129 views
-2

好,这是代码:的Python: “名称 'CD' 没有定义”

def post_search(request): 
    global cd,results,total_results 
    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}) 

找出错误的打击: name 'cd' is not defined

我定义的 'CD',怎么弄出来这个错误?

+0

您定义'cd'传递给模板的空字典如果request.GET''“查询”和'form.is_valid()'。如果。 – Amadan

+0

那么当'form._is_valid()'不是真*时会发生什么?或者request.GET'中的'query'。那么你没有清理过的数据,那么在这种情况下应该传递给模板呢? –

+0

@MartijnPieters是的,添加其他将会正确 – Profeel

回答

0

变量cd只有在GET请求中有query参数可用并且表单有效时才被声明。

要解决此问题,请将cd声明为任何默认值。如)

cd = {} 
if 'query' in request.GET: 

现在,如果CD不重新分配,你将有会cleaned_data

相关问题