2015-06-03 17 views
5

Oto mój widok:ma atrybut „META”

def data(request, symbol): 
    context_dict = {} 

    NASDAQ = "http://www.nasdaq.com/symbol/{}/financials?query=income-statement".format(symbol) 

    import urllib.request 
    from bs4 import BeautifulSoup 

    user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7' 
    headers = {'User-Agent': user_agent, } 
    request = urllib.request.Request(NASDAQ, None, headers) # The assembled request 
    response = urllib.request.urlopen(request) 
    html_data = response.read() # The data u need 

    soup = BeautifulSoup(html_data) 
    genTable = soup.find_all("div", class_="genTable") 

    context_dict['genTable'] = genTable 

    return render(request, 'data.html', context_dict) 

Kiedy wrócę HttpResponse, nie ma błędu.

Próbuję renderować powyższy context_dict powyżej do szablonu danych. To daje mi 'Request' object has no attribute Meta. Jak to naprawić?

Odpowiedz

10

Zastąpiłeś obiektu żądania przekazany do widoku według zmiennej lokalnej w linii

request = urllib.request.Request(NASDAQ, None, headers) # The assembled request 

Nazwa ta zmienna coś innego. Podobnie jak

assembled_request = urllib.request.Request(NASDAQ, None, headers) # The assembled request 
response = urllib.request.urlopen(assembled_request) 
+0

Idealny. Teraz działa. Wielkie dzięki :) – Bun

+1

Uderzyłem podobny problem, ale z klasami ogólnego widoku. W moim przypadku sprawcą był model o nazwie Request, który zastępował obiekt żądania widoku. –

2

pan przeniesiony wniosek Django z wartością powrotnej z urllib, dlatego Twoje inne linie nie pracują:

request = urllib.request.Request(NASDAQ, None, headers) 

zmienić powyżej linii tak, że ocenia się czymś innym niż request.

+0

: D Cudownie. działa teraz! – Bun

Powiązane problemy