2013-07-20 49 views
3

我用Bottle制作了一个简单的程序。然而,即使得到一个错误,UnboundLocalError:分配前引用的局部变量'request'

@route('/login') 
def login_form(): 
return '''<form method="POST" action="/login"> 
      What do you want to search for?<br> 
      <input name="search" type="text" /> 
      <input type="submit" /> 
      </form>''' 

@route('/login', method='POST') 
def PeopleSearch(): 
    raw = request.forms.get('search') 
    query = urllib.urlencode ({ 'q' : 'who is '+raw }) 


response = urllib.urlopen ('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&' + query ).read()       
json = m_json.loads (response) 
results = json [ 'responseData' ] [ 'results' ] 

for result in results : 
    url = result['url'] 
    return (url) 

的进口:

# -*- coding: cp1252 -*- 
import codecs 
from bottle import route, run, template, request 
import Tkinter 
from Tkinter import * 
import turtle 
import time 
from xgoogle.search import GoogleSearch, SearchError 
import urllib2 
import urllib 
import json as m_json 
import sys 
from urllib import FancyURLopener 
import time 
from BeautifulSoup import BeautifulSoup 
import json as simplejson 

Soup = BeautifulSoup 
from nltk import sent_tokenize, word_tokenize 
from collections import Counter 
from math import log10 
# -*- coding: utf-8 *-* 

现在,这个程序应该返回URL,但事实并非如此。它也会抛出我之前提到的错误。当我不在网页上运行它时,它工作得非常好。

+1

您未显示该代码的相关部分。某处你正在做一些函数内部的分配,因为'request'不是本地变量。显示异常的*完整回溯*。 – Bakuriu

+0

您的缩进看起来不正确。 “query = ...”行和“response = ...”行应该处于同一级别,否? –

+1

另外''for'循环中的'return'很奇怪。 –

回答

0

- 道歉 - 我看到你的帖子上有标签bottle。也许你还没有从瓶子上导入request模块。确保你有:

from bottle import request, get 

在脚本的开始。我真的很喜欢这个网页(http://bottlepy.org/docs/dev/tutorial.html)用于瓶:)


你有进口的urllib.request库,看起来你可能没有?尝试在开始导入此:

的好消息
import urllib.request 

堆此模块中的文档:http://docs.python.org/3.4/library/urllib.request.html

+0

我已经做了所有必要的导入,它以前工作过。这不是打印请求。 – user2601488

+0

我没有看到'get'的导入,通常需要使用HTTP请求方法。已更新答案,包括'get' –

0

它看起来像你缺少request模块导入。

你有脚本的顶部吗?

from bottle import request 
+0

是的,我已经使所有进口必需 – user2601488

+0

它引发错误500:内部服务器错误 – user2601488

+1

如果它是一个缺少导入错误应该是'NameError:全局名称'请求'是未定义“,而不是”UnboundLocalError“。 – Bakuriu

相关问题