2015-06-03 22 views
5

Đây là quan điểm của tôi:'Yêu cầu' đối tượng không có thuộc tính '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) 

Khi tôi trở HttpResponse, không có lỗi.

Tôi đang cố gắng hiển thị ngữ cảnh_dict ở trên vào mẫu dữ liệu. Điều này mang lại cho tôi 'Request' object has no attribute Meta. Làm thế nào để sửa lỗi này?

Trả lời

10

Bạn thay thế đối tượng yêu cầu thông qua quan điểm của bạn bằng một biến địa phương trong dòng

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

Tên này biến cái gì khác. Giống như

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

Hoàn hảo. Nó hoạt dộng bây giờ. Cảm ơn một tấn :) – Bun

+1

Tôi nhấn một vấn đề tương tự nhưng với lớp học xem chung. Trong trường hợp của tôi thủ phạm là một mô hình có tên là Yêu cầu thay thế đối tượng yêu cầu của khung nhìn. –

2

Bạn đã bố trí theo yêu cầu django với giá trị trả về từ urllib, đó là lý do tại sao các dòng khác của bạn không làm việc:

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

Thay đổi dòng trên để nó đánh giá một cái gì đó khác hơn request.

+0

: D Tuyệt vời. hoạt động ngay bây giờ! – Bun

Các vấn đề liên quan