Python / Django列表对象没有属性'status_code'

时间:2013-12-19 17:35:46

标签: python django hyperlink beautifulsoup

我有一个python脚本,它从指定的站点中提取链接,我想使用Django从中创建单页webapp。这是我的第一个Python和Django项目,所以我希望它尽可能简单,以避免任何挫折,但我有点卡住了。

这是我的views.py

from django.http import HttpResponse
from bs4 import BeautifulSoup
import urllib2, sys
import urlparse
import re
import time, threading

def businessghana(request):
    site = "http://www.businessghana.com/portal/jobs"
    hdr = {'User-Agent' : 'Mozilla/5.0'}
    req = urllib2.Request(site, headers=hdr)
    jobpass = urllib2.urlopen(req)
    soup = BeautifulSoup(jobpass)
    for tag in soup.find_all('a', href = True):
         tag['href'] = urlparse.urljoin('http://www.businessghana.com/portal/', tag['href'])
    return map(str, soup.find_all('a', href = re.compile('.getJobInfo')))
    threading.Timer(3600, businessghana).start()

这些功能大约有10个用于10个不同的站点,但它们具有相似的性质,因此对于Django项目我只使用其中一个。再次,保持简单,避免fustration

这是我的urls.py

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^hello/$', 'listing.views.businessghana'),

    url(r'^admin/', include(admin.site.urls)),
)

这是我的models.py:

(我想我在胡说八道,但这是我能想到的最好的)

class jobLinks(models.Model):
    links = models.CharField(max_length = 200)
    pub_date = models.DateTimeField('date retrieved')

    def __unicode__(self):
        return self.links

当我访问网址时:

127.0.0.1:8000/hello/

我得到错误'list'对象没有属性'status_code'。

这应该是一个单页面站点,它只显示从视图中的函数中检索到的链接。我有其他计划让它更复杂,但我想从这开始。

请问我错过了什么?

models.py内容是否有意义?

提前致谢

2 个答案:

答案 0 :(得分:2)

Django视图必须返回HttpResponse,而不是列表。

答案 1 :(得分:1)

这是一个noob问题,但像@bruno说Django视图必须返回HttpResponse。

要做到这一点,我只需将我的return语句包装在HttpResponse周围,所以它看起来像这样:

return HttpResponse(map(str, soup.find_all('a', href = re.compile('.getJobInfo'))))