【问题标题】:'Request' object has no attribute 'META'“请求”对象没有属性“元”
【发布时间】:2015-08-17 03:09:22
【问题描述】:

这是我的看法:

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)

当我返回HttpResponse时,没有错误。

我正在尝试将上面的 context_dict 渲染到数据模板中。这给了我'Request' object has no attribute Meta。我该如何解决这个问题?

【问题讨论】:

    标签: django python-3.x django-1.8


    【解决方案1】:

    您将传递给视图的请求对象替换为行中的局部变量

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

    将此变量命名为其他名称。喜欢

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

    【讨论】:

    • 我遇到了类似的问题,但使用的是通用视图类。在我的例子中,罪魁祸首是一个名为 Request 的模型,它正在替换视图的请求对象。
    【解决方案2】:

    您已经使用 urllib 的返回值重新分配了 django 的请求,这就是您的其他行不起作用的原因:

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

    更改上述行,使其计算结果为 request 以外的值。

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 2023-03-26
      • 2012-08-22
      • 2018-06-20
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多