2013-07-20 51 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

相關問題